mirror of
https://github.com/QuantumLeaps/qpcpp.git
synced 2025-01-21 05:52:58 +08:00
994 lines
52 KiB
C
994 lines
52 KiB
C
//*****************************************************************************
|
|
//
|
|
// lm3s_cmsis.h - CMSIS header file for Luminary Micro LM3S Stellaris
|
|
//
|
|
// This file is based on CMSIS specification 1.02 (02. Feb. 2009)
|
|
//
|
|
// Copyright (c) 2009 Luminary Micro, Inc. All rights reserved.
|
|
// Software License Agreement
|
|
//
|
|
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
|
|
// exclusively on LMI's microcontroller products.
|
|
//
|
|
// The software is owned by LMI and/or its suppliers, and is protected under
|
|
// applicable copyright laws. All rights are reserved. You may not combine
|
|
// this software with "viral" open-source software in order to form a larger
|
|
// program. Any use in violation of the foregoing restrictions may subject
|
|
// the user to criminal sanctions under applicable laws, as well as to civil
|
|
// liability for the breach of the terms and conditions of this license.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
|
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
|
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
|
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
|
|
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
|
//
|
|
// This is part of revision 32 of the Stellaris CMSIS Package.
|
|
//
|
|
//*****************************************************************************
|
|
|
|
#ifndef __LM3S_CMSIS_H__
|
|
#define __LM3S_CMSIS_H__
|
|
|
|
/*
|
|
* ============================================================================
|
|
* ---------- Interrupt Number Definition -------------------------------------
|
|
* ============================================================================
|
|
*/
|
|
typedef enum IRQn
|
|
{
|
|
/****** Cortex-M3 Processor Exceptions Numbers ******************************/
|
|
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
|
|
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Int */
|
|
BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
|
|
UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
|
|
SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
|
|
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt*/
|
|
PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
|
|
SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
|
|
|
|
/****** LM3S Specific Interrupt Numbers *************************************/
|
|
GPIOPortA_IRQn = 0, /*!< GPIO Port A */
|
|
GPIOPortB_IRQn = 1, /*!< GPIO Port B */
|
|
GPIOPortC_IRQn = 2, /*!< GPIO Port C */
|
|
GPIOPortD_IRQn = 3, /*!< GPIO Port D */
|
|
GPIOPortE_IRQn = 4, /*!< GPIO Port E */
|
|
UART0_IRQn = 5, /*!< UART0 */
|
|
UART1_IRQn = 6, /*!< UART1 */
|
|
SSI0_IRQn = 7, /*!< SSI0 */
|
|
I2C0_IRQn = 8, /*!< I2C0 */
|
|
PWMFault_IRQn = 9, /*!< PWM Fault */
|
|
PWMGen0_IRQn = 10, /*!< PWM Generator 0 */
|
|
PWMGen1_IRQn = 11, /*!< PWM Generator 1 */
|
|
PWMGen2_IRQn = 12, /*!< PWM Generator 2 */
|
|
QEI0_IRQn = 13, /*!< Quadrature Encoder 0 */
|
|
ADCSeq0_IRQn = 14, /*!< ADC Sequence 0 */
|
|
ADCSeq1_IRQn = 15, /*!< ADC Sequence 1 */
|
|
ADCSeq2_IRQn = 16, /*!< ADC Sequence 2 */
|
|
ADCSeq3_IRQn = 17, /*!< ADC Sequence 3 */
|
|
Watchdog_IRQn = 18, /*!< Watchdog */
|
|
Timer0A_IRQn = 19, /*!< Timer 0A */
|
|
Timer0B_IRQn = 20, /*!< Timer 0B */
|
|
Timer1A_IRQn = 21, /*!< Timer 1A */
|
|
Timer1B_IRQn = 22, /*!< Timer 1B */
|
|
Timer2A_IRQn = 23, /*!< Timer 2A */
|
|
Timer2B_IRQn = 24, /*!< Timer 2B */
|
|
Comp0_IRQn = 25, /*!< Comp 0 */
|
|
Comp1_IRQn = 26, /*!< Comp 1 */
|
|
Comp2_IRQn = 27, /*!< Comp 2 */
|
|
SysCtrl_IRQn = 28, /*!< System Control */
|
|
FlashCtrl_IRQn = 29, /*!< Flash Control */
|
|
GPIOPortF_IRQn = 30, /*!< GPIO Port F */
|
|
GPIOPortG_IRQn = 31, /*!< GPIO Port G */
|
|
GPIOPortH_IRQn = 32, /*!< GPIO Port H */
|
|
USART2_IRQn = 33, /*!< UART2 Rx and Tx */
|
|
SSI1_IRQn = 34, /*!< SSI1 Rx and Tx */
|
|
Timer3A_IRQn = 35, /*!< Timer 3 subtimer A */
|
|
Timer3B_IRQn = 36, /*!< Timer 3 subtimer B */
|
|
I2C1_IRQn = 37, /*!< I2C1 Master and Slave */
|
|
QEI1_IRQn = 38, /*!< Quadrature Encoder 1 */
|
|
CAN0_IRQn = 39, /*!< CAN0 */
|
|
CAN1_IRQn = 40, /*!< CAN1 */
|
|
CAN2_IRQn = 41, /*!< CAN2 */
|
|
Ethernet_IRQn = 42, /*!< Ethernet */
|
|
Hibernate_IRQn = 43, /*!< Hibernate */
|
|
USB0_IRQn = 44, /*!< USB0 */
|
|
PWMGen3_IRQn = 45, /*!< PWM Generator 3 */
|
|
uDMA_IRQn = 46, /*!< uDMA Software Transfer */
|
|
uDMAErr_IRQn = 47 /*!< uDMA Error */
|
|
} IRQn_Type;
|
|
|
|
|
|
/*
|
|
* ============================================================================
|
|
* ----------- Processor and Core Peripheral Section --------------------------
|
|
* ============================================================================
|
|
*/
|
|
|
|
/* Configuration of the Cortex-M3 Processor and Core Peripherals */
|
|
#define __MPU_PRESENT 1 /*!< MPU present or not */
|
|
#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Prio Levels */
|
|
#define __Vendor_SysTickConfig 0 /*!< 1 if different SysTick config used */
|
|
|
|
|
|
#include "core_cm3.h" /* Cortex-M3 processor and core periphs */
|
|
|
|
extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */
|
|
|
|
/**
|
|
* @brief Setup the initial configuration of the microcontroller
|
|
* @param none
|
|
* @return none
|
|
*
|
|
* Initialize the system clocking according to the user configuration.
|
|
*/
|
|
extern void SystemInit (void);
|
|
|
|
/**
|
|
* Assertion handler
|
|
*
|
|
* @brief A function to handle an assertion.
|
|
* This function should be defined at the application level
|
|
* and should never return to the caller.
|
|
*/
|
|
extern void assert_failed (char const *file, int line);
|
|
|
|
/*****************************************************************************/
|
|
/* Device Specific Peripheral registers structures */
|
|
/*****************************************************************************/
|
|
|
|
/*---------- System Controller (SYSCTL) -----------*/
|
|
// <g> System Controller (SYSCTL)
|
|
typedef struct
|
|
{
|
|
__I uint32_t DID0; // Device identification register 0
|
|
__I uint32_t DID1; // Device identification register 1
|
|
__I uint32_t DC0; // Device capabilities register 0
|
|
uint8_t RESERVED1[4];
|
|
__I uint32_t DC1; // Device capabilities register 1
|
|
__I uint32_t DC2; // Device capabilities register 2
|
|
__I uint32_t DC3; // Device capabilities register 3
|
|
__I uint32_t DC4; // Device capabilities register 4
|
|
__I uint32_t DC5; // Device capabilities register 5
|
|
__I uint32_t DC6; // Device capabilities register 6
|
|
__I uint32_t DC7; // Device capabilities register 7
|
|
uint8_t RESERVED2[4];
|
|
__IO uint32_t PBORCTL; // POR/BOR reset control register
|
|
__IO uint32_t LDOPCTL; // LDO power control register
|
|
uint8_t RESERVED3[8];
|
|
__IO uint32_t SRCR0; // Software reset control reg 0
|
|
__IO uint32_t SRCR1; // Software reset control reg 1
|
|
__IO uint32_t SRCR2; // Software reset control reg 2
|
|
uint8_t RESERVED4[4];
|
|
__I uint32_t RIS; // Raw interrupt status register
|
|
__IO uint32_t IMC; // Interrupt mask/control register
|
|
__IO uint32_t MISC; // Interrupt status register
|
|
__IO uint32_t RESC; // Reset cause register
|
|
__IO uint32_t RCC; // Run-mode clock config register
|
|
__I uint32_t PLLCFG; // PLL configuration register
|
|
uint8_t RESERVED5[4];
|
|
__IO uint32_t GPIOHSCTL; // GPIO High Speed Control
|
|
__IO uint32_t RCC2; // Run-mode clock config register 2
|
|
uint8_t RESERVED6[8];
|
|
__IO uint32_t MOSCCTL; // Main Oscillator Control
|
|
uint8_t RESERVED7[128];
|
|
__IO uint32_t RCGC0; // Run-mode clock gating register 0
|
|
__IO uint32_t RCGC1; // Run-mode clock gating register 1
|
|
__IO uint32_t RCGC2; // Run-mode clock gating register 2
|
|
uint8_t RESERVED8[4];
|
|
__IO uint32_t SCGC0; // Sleep-mode clock gating reg 0
|
|
__IO uint32_t SCGC1; // Sleep-mode clock gating reg 1
|
|
__IO uint32_t SCGC2; // Sleep-mode clock gating reg 2
|
|
uint8_t RESERVED9[4];
|
|
__IO uint32_t DCGC0; // Deep Sleep-mode clock gate reg 0
|
|
__IO uint32_t DCGC1; // Deep Sleep-mode clock gate reg 1
|
|
__IO uint32_t DCGC2; // Deep Sleep-mode clock gate reg 2
|
|
uint8_t RESERVED10[24];
|
|
__IO uint32_t DSLPCLKCFG; // Deep Sleep-mode clock config reg
|
|
} SYSCTL_Type;
|
|
// </g>
|
|
|
|
/*---------- General Purpose Input/Output (GPIO) -----------*/
|
|
// <g> General Purpose Input/Output (GPIO)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t DATA_Bits[255]; // Bit specific data registers
|
|
__IO uint32_t DATA; // Data register.
|
|
__IO uint32_t DIR; // Data direction register.
|
|
__IO uint32_t IS; // Interrupt sense register.
|
|
__IO uint32_t IBE; // Interrupt both edges register.
|
|
__IO uint32_t IEV; // Interrupt event register.
|
|
__IO uint32_t IM; // Interrupt mask register.
|
|
__I uint32_t RIS; // Raw interrupt status register.
|
|
__I uint32_t MIS; // Masked interrupt status reg.
|
|
__O uint32_t ICR; // Interrupt clear register.
|
|
__IO uint32_t AFSEL; // Mode control select register.
|
|
uint8_t RESERVED1[220];
|
|
__IO uint32_t DR2R; // 2ma drive select register.
|
|
__IO uint32_t DR4R; // 4ma drive select register.
|
|
__IO uint32_t DR8R; // 8ma drive select register.
|
|
__IO uint32_t ODR; // Open drain select register.
|
|
__IO uint32_t PUR; // Pull up select register.
|
|
__IO uint32_t PDR; // Pull down select register.
|
|
__IO uint32_t SLR; // Slew rate control enable reg.
|
|
__IO uint32_t DEN; // Digital input enable register.
|
|
__IO uint32_t LOCK; // Lock register.
|
|
__O uint32_t CR; // Commit register.
|
|
__IO uint32_t AMSEL; // GPIO Analog Mode Select
|
|
} GPIO_Type;
|
|
// </g>
|
|
|
|
/*---------- General Purpose Timer (TIMER) -----------*/
|
|
// <g> General Purpose Timer (TIMER)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CFG; // Configuration register
|
|
__IO uint32_t TAMR; // TimerA mode register
|
|
__IO uint32_t TBMR; // TimerB mode register
|
|
__IO uint32_t CTL; // Control register
|
|
uint8_t RESERVED0[8];
|
|
__IO uint32_t IMR; // Interrupt mask register
|
|
__I uint32_t RIS; // Interrupt status register
|
|
__I uint32_t MIS; // Masked interrupt status reg.
|
|
__O uint32_t ICR; // Interrupt clear register
|
|
__IO uint32_t TAILR; // TimerA interval load register
|
|
__IO uint32_t TBILR; // TimerB interval load register
|
|
__IO uint32_t TAMATCHR; // TimerA match register
|
|
__IO uint32_t TBMATCHR; // TimerB match register
|
|
__IO uint32_t TAPR; // TimerA prescale register
|
|
__IO uint32_t TBPR; // TimerB prescale register
|
|
__IO uint32_t TAPMR; // TimerA prescale match register
|
|
__IO uint32_t TBPMR; // TimerB prescale match register
|
|
__I uint32_t TAR; // TimerA register
|
|
__I uint32_t TBR; // TimerB register
|
|
} TIMER_Type;
|
|
// </g>
|
|
|
|
/*---------- Analog to Digital Converter (ADC) -----------*/
|
|
// <g> Analog to Digital Converter (ADC)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t ACTSS; // Active sample register
|
|
__I uint32_t RIS; // Raw interrupt status register
|
|
__IO uint32_t IM; // Interrupt mask register
|
|
__IO uint32_t ISC; // Interrupt status/clear register
|
|
__IO uint32_t OSTAT; // Overflow status register
|
|
__IO uint32_t EMUX; // Event multiplexer select reg.
|
|
__IO uint32_t USTAT; // Underflow status register
|
|
uint8_t RESERVED0[4];
|
|
__IO uint32_t SSPRI; // Channel priority register
|
|
uint8_t RESERVED1[4];
|
|
__O uint32_t PSSI; // Processor sample initiate reg.
|
|
uint8_t RESERVED2[4];
|
|
__IO uint32_t SAC; // Sample Averaging Control reg.
|
|
uint8_t RESERVED3[12];
|
|
__IO uint32_t SSMUX0; // Multiplexer select 0 register
|
|
__IO uint32_t SSCTL0; // Sample sequence control 0 reg.
|
|
__I uint32_t SSFIFO0; // Result FIFO 0 register
|
|
__I uint32_t SSFSTAT0; // FIFO 0 status register
|
|
uint8_t RESERVED4[16];
|
|
__IO uint32_t SSMUX1; // Multiplexer select 1 register
|
|
__IO uint32_t SSCTL1; // Sample sequence control 1 reg.
|
|
__I uint32_t SSFIFO1; // Result FIFO 1 register
|
|
__I uint32_t SSFSTAT1; // FIFO 1 status register
|
|
uint8_t RESERVED5[16];
|
|
__IO uint32_t SSMUX2; // Multiplexer select 2 register
|
|
__IO uint32_t SSCTL2; // Sample sequence control 2 reg.
|
|
__I uint32_t SSFIFO2; // Result FIFO 2 register
|
|
__I uint32_t SSFSTAT2; // FIFO 2 status register
|
|
uint8_t RESERVED6[16];
|
|
__IO uint32_t SSMUX3; // Multiplexer select 3 register
|
|
__IO uint32_t SSCTL3; // Sample sequence control 3 reg.
|
|
__I uint32_t SSFIFO3; // Result FIFO 3 register
|
|
__I uint32_t SSFSTAT3; // FIFO 3 status register
|
|
uint8_t RESERVED7[80];
|
|
__IO uint32_t TMLB; // Test mode loopback register
|
|
} ADC_Type;
|
|
// </g>
|
|
|
|
/*---------- Controller Area Network (CAN) -----------*/
|
|
// <g> Controller Area Network (CAN)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CTL; // Control register
|
|
__IO uint32_t STS; // Status register
|
|
__I uint32_t ERR; // Error register
|
|
__IO uint32_t BIT; // Bit Timing register
|
|
__I uint32_t INT; // Interrupt register
|
|
__IO uint32_t TST; // Test register
|
|
__IO uint32_t BRPE; // Baud Rate Prescaler register
|
|
uint8_t RESERVED0[4];
|
|
__IO uint32_t IF1CRQ; // Interface 1 Command Request reg.
|
|
__IO uint32_t IF1CMSK; // Interface 1 Command Mask reg.
|
|
__IO uint32_t IF1MSK1; // Interface 1 Mask 1 register
|
|
__IO uint32_t IF1MSK2; // Interface 1 Mask 2 register
|
|
__IO uint32_t IF1ARB1; // Interface 1 Arbitration 1 reg.
|
|
__IO uint32_t IF1ARB2; // Interface 1 Arbitration 2 reg.
|
|
__IO uint32_t IF1MCTL; // Interface 1 Message Control reg.
|
|
__IO uint32_t IF1DA1; // Interface 1 DataA 1 register
|
|
__IO uint32_t IF1DA2; // Interface 1 DataA 2 register
|
|
__IO uint32_t IF1DB1; // Interface 1 DataB 1 register
|
|
__IO uint32_t IF1DB2; // Interface 1 DataB 2 register
|
|
uint8_t RESERVED1[52];
|
|
__IO uint32_t IF2CRQ; // Interface 2 Command Request reg.
|
|
__IO uint32_t IF2CMSK; // Interface 2 Command Mask reg.
|
|
__IO uint32_t IF2MSK1; // Interface 2 Mask 1 register
|
|
__IO uint32_t IF2MSK2; // Interface 2 Mask 2 register
|
|
__IO uint32_t IF2ARB1; // Interface 2 Arbitration 1 reg.
|
|
__IO uint32_t IF2ARB2; // Interface 2 Arbitration 2 reg.
|
|
__IO uint32_t IF2MCTL; // Interface 2 Message Control reg.
|
|
__IO uint32_t IF2DA1; // Interface 2 DataA 1 register
|
|
__IO uint32_t IF2DA2; // Interface 2 DataA 2 register
|
|
__IO uint32_t IF2DB1; // Interface 2 DataB 1 register
|
|
__IO uint32_t IF2DB2; // Interface 2 DataB 2 register
|
|
uint8_t RESERVED2[84];
|
|
__I uint32_t TXRQ1; // Transmission Request 1 register
|
|
__I uint32_t TXRQ2; // Transmission Request 2 register
|
|
uint8_t RESERVED3[24];
|
|
__I uint32_t NWDA1; // New Data 1 register
|
|
__I uint32_t NWDA2; // New Data 2 register
|
|
uint8_t RESERVED4[24];
|
|
__I uint32_t MSG1INT; // CAN Message 1 Interrupt Pending
|
|
__I uint32_t MSG2INT; // CAN Message 2 Interrupt Pending
|
|
uint8_t RESERVED5[24];
|
|
__I uint32_t MSG1VAL; // CAN Message 1 Valid
|
|
__I uint32_t MSG2VAL; // CAN Message 2 Valid
|
|
} CAN_Type;
|
|
// </g>
|
|
|
|
/*---------- Analog Comparators (COMP) -----------*/
|
|
// <g> Analog Comparators (COMP)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t ACMIS; // Analog Comparator Masked
|
|
// Interrupt Status
|
|
__I uint32_t ACRIS; // Analog Comparator Raw Interrupt Status
|
|
__IO uint32_t ACINTEN; // Analog Comparator Interrupt Enable
|
|
uint8_t RESERVED0[4];
|
|
__IO uint32_t ACREFCTL; // Analog Comparator Reference Voltage
|
|
// Control
|
|
uint8_t RESERVED1[12];
|
|
__I uint32_t ACSTAT0; // Comp0 status register
|
|
__IO uint32_t ACCTL0; // Comp0 control register
|
|
uint8_t RESERVED2[24];
|
|
__I uint32_t ACSTAT1; // Comp1 status register
|
|
__IO uint32_t ACCTL1; // Comp1 control register
|
|
uint8_t RESERVED3[24];
|
|
__I uint32_t ACSTAT2; // Comp2 status register
|
|
__IO uint32_t ACCTL2; // Comp2 control register
|
|
} COMP_Type;
|
|
// </g>
|
|
|
|
/*---------- Ethernet Controller (MAC) -----------*/
|
|
// <g> Ethernet Controller (MAC)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t RIS; // (__I) Ethernet MAC Raw Interrupt Status
|
|
#define IACK RIS // (__O)Interrupt Acknowledge Register
|
|
__IO uint32_t IM; // Interrupt Mask Register
|
|
__IO uint32_t RCTL; // Receive Control Register
|
|
__IO uint32_t TCTL; // Transmit Control Register
|
|
__IO uint32_t DATA; // Data Register
|
|
__IO uint32_t IA0; // Individual Address Register 0
|
|
__IO uint32_t IA1; // Individual Address Register 1
|
|
__IO uint32_t THR; // Threshold Register
|
|
__IO uint32_t MCTL; // Management Control Register
|
|
__IO uint32_t MDV; // Management Divider Register
|
|
uint8_t RESERVED1[4];
|
|
__IO uint32_t MTXD; // Management Transmit Data Reg
|
|
__IO uint32_t MRXD; // Management Receive Data Reg
|
|
__I uint32_t NP; // Number of Packets Register
|
|
__IO uint32_t TR; // Transmission Request Register
|
|
__IO uint32_t TS; // Timer Support Register
|
|
} MAC_Type;
|
|
// </g>
|
|
|
|
/*---------- Flash Memory Controller (FLASH) -----------*/
|
|
// <g> Flash Memory Controller (FLASH)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t FMA; // Memory address register
|
|
__IO uint32_t FMD; // Memory data register
|
|
__IO uint32_t FMC; // Memory control register
|
|
__I uint32_t FCRIS; // Raw interrupt status register
|
|
__IO uint32_t FCIM; // Interrupt mask register
|
|
__IO uint32_t FCMISC; // Interrupt status register
|
|
uint8_t RESERVED1[4312];
|
|
__IO uint32_t RMCTL; // ROM Control
|
|
__I uint32_t RMVER; // ROM Version Register
|
|
uint8_t RESERVED2[56];
|
|
__IO uint32_t FMPRE; // FLASH read protect register
|
|
__IO uint32_t FMPPE; // FLASH program protect register
|
|
uint8_t RESERVED3[8];
|
|
__IO uint32_t USECRL; // uSec reload register
|
|
uint8_t RESERVED4[140];
|
|
__IO uint32_t USERDBG; // User Debug
|
|
uint8_t RESERVED5[12];
|
|
__IO uint32_t USERREG0; // User Register 0
|
|
__IO uint32_t USERREG1; // User Register 1
|
|
__IO uint32_t USERREG2; // User Register 2
|
|
__IO uint32_t USERREG3; // User Register 3
|
|
uint8_t RESERVED6[16];
|
|
__IO uint32_t FMPRE0; // FLASH read protect register 0
|
|
__IO uint32_t FMPRE1; // FLASH read protect register 1
|
|
__IO uint32_t FMPRE2; // FLASH read protect register 2
|
|
__IO uint32_t FMPRE3; // FLASH read protect register 3
|
|
uint8_t RESERVED7[496];
|
|
__IO uint32_t FMPPE0; // FLASH program protect register 0
|
|
__IO uint32_t FMPPE1; // FLASH program protect register 1
|
|
__IO uint32_t FMPPE2; // FLASH program protect register 2
|
|
__IO uint32_t FMPPE3; // FLASH program protect register 3
|
|
} FLASH_Type;
|
|
// </g>
|
|
|
|
/*---------- Hibernation Module (HIB) -----------*/
|
|
// <g> Hibernation Module (HIB)
|
|
typedef struct
|
|
{
|
|
__I uint32_t HIB_RTCC; // Hibernate RTC counter
|
|
__IO uint32_t HIB_RTCM0; // Hibernate RTC match 0
|
|
__IO uint32_t HIB_RTCM1; // Hibernate RTC match 1
|
|
__IO uint32_t HIB_RTCLD; // Hibernate RTC load
|
|
__IO uint32_t HIB_CTL; // Hibernate RTC control
|
|
__IO uint32_t HIB_IM; // Hibernate interrupt mask
|
|
__I uint32_t HIB_RIS; // Hibernate raw interrupt status
|
|
__I uint32_t HIB_MIS; // Hibernate masked interrupt stat
|
|
__IO uint32_t HIB_IC; // Hibernate interrupt clear
|
|
__IO uint32_t HIB_RTCT; // Hibernate RTC trim
|
|
uint8_t RESERVED1[8];
|
|
__IO uint32_t HIB_DATA[64]; // Hibernate data area
|
|
} HIB_Type;
|
|
// </g>
|
|
|
|
/*-------- Inter-Integrated Circuit Controller Master (I2C_MASTER) ----------*/
|
|
// <g> Inter-Integrated Circuit Controller Master (I2C_MASTER)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t MSA; // I2C Master Slave Address
|
|
__IO uint32_t MCS; // I2C Master Control/Status
|
|
__IO uint32_t MDR; // I2C Master Data
|
|
__IO uint32_t MTPR; // I2C Master Timer Period
|
|
__IO uint32_t MIMR; // I2C Master Interrupt Mask
|
|
__I uint32_t MRIS; // I2C Master Raw Interrupt Status
|
|
__I uint32_t MMIS; // I2C Master Masked Interrupt Status
|
|
__O uint32_t MICR; // I2C Master Interrupt Clear
|
|
__IO uint32_t MCR; // I2C Master Configuration
|
|
} I2C_MASTER_Type;
|
|
// </g>
|
|
|
|
/*--------- Inter-Integrated Circuit Controller Slave (I2C_SLAVE) -----------*/
|
|
// <g> Inter-Integrated Circuit Controller Slave (I2C_SLAVE)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t SOAR; // I2C Slave Own Address
|
|
__I uint32_t SCSR; // I2C Slave Control/Status
|
|
__IO uint32_t SDR; // I2C Slave Data
|
|
__IO uint32_t SIMR; // I2C Slave Interrupt Mask
|
|
__I uint32_t SRIS; // I2C Slave Raw Interrupt Status
|
|
__I uint32_t SMIS; // I2C Slave Masked Interrupt Status
|
|
__O uint32_t SICR; // I2C Slave Interrupt Clear
|
|
} I2C_SLAVE_Type;
|
|
// </g>
|
|
|
|
/*---------- Pulse Width Modulation (PWM) -----------*/
|
|
// <g> Pulse Width Modulation (PWM)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CTL; // PWM Master Control register
|
|
__IO uint32_t SYNC; // PWM Time Base Sync register
|
|
__IO uint32_t ENABLE; // PWM Output Enable register
|
|
__IO uint32_t INVERT; // PWM Output Inversion register
|
|
__IO uint32_t FAULT; // PWM Output Fault register
|
|
__IO uint32_t INTEN; // PWM Interrupt Enable register
|
|
__I uint32_t RIS; // PWM Interrupt Raw Status reg.
|
|
__IO uint32_t ISC; // PWM Interrupt Status register
|
|
__I uint32_t STATUS; // PWM Status register
|
|
__IO uint32_t FAULTVAL; // PWM Fault Condition Value
|
|
uint8_t RESERVED0[24];
|
|
__IO uint32_t GEN0_CTL; // PWM0 Control
|
|
__IO uint32_t GEN0_INTEN; // PWM0 Interrupt and Trigger Enable
|
|
__I uint32_t GEN0_RIS; // PWM0 Raw Interrupt Status
|
|
__IO uint32_t GEN0_ISC; // PWM0 Interrupt Status and Clear
|
|
__IO uint32_t GEN0_LOAD; // PWM0 Load
|
|
__I uint32_t GEN0_COUNT; // PWM0 Counter
|
|
__IO uint32_t GEN0_CMPA; // PWM0 Compare A
|
|
__IO uint32_t GEN0_CMPB; // PWM0 Compare B
|
|
__IO uint32_t GEN0_GENA; // PWM0 Generator A Control
|
|
__IO uint32_t GEN0_GENB; // PWM0 Generator B Control
|
|
__IO uint32_t GEN0_DBCTL; // PWM0 Dead-Band Control
|
|
__IO uint32_t GEN0_DBRISE; // PWM0 Dead-Band Rising-Edge Delay
|
|
__IO uint32_t GEN0_DBFALL; // PWM0 Dead-Band Falling-Edge-Delay
|
|
__IO uint32_t GEN0_FLTSRC0; // PWM0 Fault Source 0
|
|
uint8_t RESERVED1[4];
|
|
__IO uint32_t GEN0_MINFLTPER; // PWM0 Minimum Fault Period
|
|
__IO uint32_t GEN1_CTL; // PWM1 Control
|
|
__IO uint32_t GEN1_INTEN; // PWM1 Interrupt Enable
|
|
__I uint32_t GEN1_RIS; // PWM1 Raw Interrupt Status
|
|
__IO uint32_t GEN1_ISC; // PWM1 Interrupt Status and Clear
|
|
__IO uint32_t GEN1_LOAD; // PWM1 Load
|
|
__I uint32_t GEN1_COUNT; // PWM1 Counter
|
|
__IO uint32_t GEN1_CMPA; // PWM1 Compare A
|
|
__IO uint32_t GEN1_CMPB; // PWM1 Compare B
|
|
__IO uint32_t GEN1_GENA; // PWM1 Generator A Control
|
|
__IO uint32_t GEN1_GENB; // PWM1 Generator B Control
|
|
__IO uint32_t GEN1_DBCTL; // PWM1 Dead-Band Control
|
|
__IO uint32_t GEN1_DBRISE; // PWM1 Dead-Band Rising-Edge Delay
|
|
__IO uint32_t GEN1_DBFALL; // PWM1 Dead-Band Falling-Edge-Delay
|
|
__IO uint32_t GEN1_FLTSRC0; // PWM1 Fault Source 0
|
|
uint8_t RESERVED2[4];
|
|
__IO uint32_t GEN1_MINFLTPER; // PWM1 Minimum Fault Period
|
|
__IO uint32_t GEN2_CTL; // PWM2 Control
|
|
__IO uint32_t GEN2_INTEN; // PWM2 InterruptEnable
|
|
__I uint32_t GEN2_RIS; // PWM2 Raw Interrupt Status
|
|
__IO uint32_t GEN2_ISC; // PWM2 Interrupt Status and Clear
|
|
__IO uint32_t GEN2_LOAD; // PWM2 Load
|
|
__I uint32_t GEN2_COUNT; // PWM2 Counter
|
|
__IO uint32_t GEN2_CMPA; // PWM2 Compare A
|
|
__IO uint32_t GEN2_CMPB; // PWM2 Compare B
|
|
__IO uint32_t GEN2_GENA; // PWM2 Generator A Control
|
|
__IO uint32_t GEN2_GENB; // PWM2 Generator B Control
|
|
__IO uint32_t GEN2_DBCTL; // PWM2 Dead-Band Control
|
|
__IO uint32_t GEN2_DBRISE; // PWM2 Dead-Band Rising-Edge Delay
|
|
__IO uint32_t GEN2_DBFALL; // PWM2 Dead-Band Falling-Edge-Delay
|
|
__IO uint32_t GEN2_FLTSRC0; // PWM2 Fault Source 0
|
|
uint8_t RESERVED3[4];
|
|
__IO uint32_t GEN2_MINFLTPER; // PWM2 Minimum Fault Period
|
|
__IO uint32_t GEN3_CTL; // PWM3 Control
|
|
__IO uint32_t GEN3_INTEN; // PWM3 Interrupt and Trigger Enable
|
|
__I uint32_t GEN3_RIS; // PWM3 Raw Interrupt Status
|
|
__IO uint32_t GEN3_ISC; // PWM3 Interrupt Status and Clear
|
|
__IO uint32_t GEN3_LOAD; // PWM3 Load
|
|
__I uint32_t GEN3_COUNT; // PWM3 Counter
|
|
__IO uint32_t GEN3_CMPA; // PWM3 Compare A
|
|
__IO uint32_t GEN3_CMPB; // PWM3 Compare B
|
|
__IO uint32_t GEN3_GENA; // PWM3 Generator A Control
|
|
__IO uint32_t GEN3_GENB; // PWM3 Generator B Control
|
|
__IO uint32_t GEN3_DBCTL; // PWM3 Dead-Band Control
|
|
__IO uint32_t GEN3_DBRISE; // PWM3 Dead-Band Rising-Edge Delay
|
|
__IO uint32_t GEN3_DBFALL; // PWM3 Dead-Band Falling-Edge-Delay
|
|
__IO uint32_t GEN3_FLTSRC0; // PWM3 Fault Source 0
|
|
uint8_t RESERVED4[4];
|
|
__IO uint32_t GEN3_MINFLTPER; // PWM3 Minimum Fault Period
|
|
uint8_t RESERVED5[1728];
|
|
__IO uint32_t GEN0_FLTSEN; // PWM0 Fault Pin Logic Sense
|
|
__I uint32_t GEN0_FLTSTAT0; // PWM0 Fault Status 0
|
|
uint8_t RESERVED6[120];
|
|
__IO uint32_t GEN1_FLTSEN; // PWM1 Fault Pin Logic Sense
|
|
__I uint32_t GEN1_FLTSTAT0; // PWM1 Fault Status 0
|
|
uint8_t RESERVED7[120];
|
|
__IO uint32_t GEN2_FLTSEN; // PWM2 Fault Pin Logic Sense
|
|
__I uint32_t GEN2_FLTSTAT0; // PWM2 Fault Status 0
|
|
uint8_t RESERVED8[120];
|
|
__IO uint32_t GEN3_FLTSEN; // PWM3 Fault Pin Logic Sense
|
|
__I uint32_t GEN3_FLTSTAT0; // PWM3 Fault Status 0
|
|
} PWM_Type;
|
|
// </g>
|
|
|
|
/*---------- Pulse Width Modulation Generator (PWMGEN) -----------*/
|
|
// <g> Pulse Width Modulation Generator (PWMGEN)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CTL; // PWM0 Control
|
|
__IO uint32_t INTEN; // PWM0 Interrupt and Trigger Enable
|
|
__I uint32_t RIS; // PWM0 Raw Interrupt Status
|
|
__IO uint32_t ISC; // PWM0 Interrupt Status and Clear
|
|
__IO uint32_t LOAD; // PWM0 Load
|
|
__I uint32_t COUNT; // PWM0 Counter
|
|
__IO uint32_t CMPA; // PWM0 Compare A
|
|
__IO uint32_t CMPB; // PWM0 Compare B
|
|
__IO uint32_t GENA; // PWM0 Generator A Control
|
|
__IO uint32_t GENB; // PWM0 Generator B Control
|
|
__IO uint32_t DBCTL; // PWM0 Dead-Band Control
|
|
__IO uint32_t DBRISE; // PWM0 Dead-Band Rising-Edge Delay
|
|
__IO uint32_t DBFALL; // PWM0 Dead-Band Falling-Edge-Delay
|
|
__IO uint32_t FLTSRC0; // PWM0 Fault Source 0
|
|
uint8_t RESERVED1[4];
|
|
__IO uint32_t MINFLTPER; // PWM0 Minimum Fault Period
|
|
} PWMGEN_Type;
|
|
// </g>
|
|
|
|
/*---------- Quadrature Encoded Input (QEI) -----------*/
|
|
// <g> Quadrature Encoded Input (QEI)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CTL; // Configuration and control reg.
|
|
__I uint32_t STAT; // Status register
|
|
__IO uint32_t POS; // Current position register
|
|
__IO uint32_t MAXPOS; // Maximum position register
|
|
__IO uint32_t LOAD; // Velocity timer load register
|
|
__I uint32_t TIME; // Velocity timer register
|
|
__I uint32_t COUNT; // Velocity pulse count register
|
|
__I uint32_t SPEED; // Velocity speed register
|
|
__IO uint32_t INTEN; // Interrupt enable register
|
|
__I uint32_t RIS; // Raw interrupt status register
|
|
__IO uint32_t ISC; // Interrupt status register
|
|
} QEI_Type;
|
|
// </g>
|
|
|
|
/*---------- Synchronous Serial Interface (SSI) -----------*/
|
|
// <g> Synchronous Serial Interface (SSI)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t CR0; // Control register 0
|
|
__IO uint32_t CR1; // Control register 1
|
|
__IO uint32_t DR; // Data register
|
|
__I uint32_t SR; // Status register
|
|
__IO uint32_t CPSR; // Clock prescale register
|
|
__IO uint32_t IM; // Int mask set and clear register
|
|
__I uint32_t RIS; // Raw interrupt register
|
|
__I uint32_t MIS; // Masked interrupt register
|
|
__O uint32_t ICR; // Interrupt clear register
|
|
__IO uint32_t DMACTL; // SSI DMA Control
|
|
} SSI_Type;
|
|
// </g>
|
|
|
|
/*---------- Asynchronous Serial (UART) -----------*/
|
|
// <g> Asynchronous Serial (UART)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t DR; // Data Register
|
|
__IO uint32_t RSR; // Receive Status Register (read)
|
|
#define ECR RSR // Error Clear Register (write)
|
|
uint8_t RESERVED1[16];
|
|
__I uint32_t FR; // Flag Register (read only)
|
|
uint8_t RESERVED2[4];
|
|
__IO uint32_t ILPR; // UART IrDA Low-Power Register
|
|
__IO uint32_t IBRD; // Integer Baud Rate Divisor Reg
|
|
__IO uint32_t FBRD; // Fractional Baud Rate Divisor Reg
|
|
__IO uint32_t LCRH; // UART Line Control
|
|
__IO uint32_t CTL; // Control Register
|
|
__IO uint32_t IFLS; // Interrupt FIFO Level Select Reg
|
|
__IO uint32_t IM; // Interrupt Mask Set/Clear Reg
|
|
__I uint32_t RIS; // Raw Interrupt Status Register
|
|
__I uint32_t MIS; // Masked Interrupt Status Register
|
|
__O uint32_t ICR; // Interrupt Clear Register
|
|
__IO uint32_t DMACTL; // UART DMA Control
|
|
} UART_Type;
|
|
// </g>
|
|
|
|
/*---------- DMA Controller (UDMA) -----------*/
|
|
// <g> DMA Controller (UDMA)
|
|
typedef struct
|
|
{
|
|
__I uint32_t STAT; // DMA Status
|
|
__O uint32_t CFG; // DMA Configuration
|
|
__IO uint32_t CTLBASE; // DMA Channel Control Base Pointer
|
|
__I uint32_t ALTBASE; // DMA Alternate Channel Control Base
|
|
// Pointer
|
|
__I uint32_t WAITSTAT; // DMA Channel Wait on Request Status
|
|
__O uint32_t SWREQ; // DMA Channel Software Request
|
|
__IO uint32_t USEBURSTSET; // DMA Channel Useburst Set
|
|
__O uint32_t USEBURSTCLR; // DMA Channel Useburst Clear
|
|
__IO uint32_t REQMASKSET; // DMA Channel Request Mask Set
|
|
__O uint32_t REQMASKCLR; // DMA Channel Request Mask Clear
|
|
__IO uint32_t ENASET; // DMA Channel Enable Set
|
|
__O uint32_t ENACLR; // DMA Channel Enable Clear
|
|
__IO uint32_t ALTSET; // DMA Channel Primary Alternate Set
|
|
__O uint32_t ALTCLR; // DMA Channel Primary Alternate Clear
|
|
__IO uint32_t PRIOSET; // DMA Channel Priority Set
|
|
__O uint32_t PRIOCLR; // DMA Channel Priority Clear
|
|
uint8_t RESERVED1[12];
|
|
__IO uint32_t ERRCLR; // DMA Bus Error Clear
|
|
} UDMA_Type;
|
|
// </g>
|
|
|
|
/*---------- DMA Channel Control Structure (UDMA_CTRL) -----------*/
|
|
// <g> DMA Channel Control Structure (UDMA_CTRL)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t SRCENDP; // DMA Channel Source Address End Pointer
|
|
__IO uint32_t DSTENDP; // DMA Channel Destination Address End
|
|
// Pointer
|
|
__IO uint32_t CHCTL; // DMA Channel Control Word
|
|
} UDMA_CTRL_Type;
|
|
// </g>
|
|
|
|
/*---------- Universal Serial Bus Controller (USB) -----------*/
|
|
// <g> Universal Serial Bus Controller (USB)
|
|
typedef struct
|
|
{
|
|
__IO uint8_t FADDR; // USB Device Functional Address
|
|
__IO uint8_t POWER; // USB Power
|
|
__I uint16_t TXIS; // USB Transmit Interrupt Status
|
|
__I uint16_t RXIS; // USB Receive Interrupt Status
|
|
__IO uint16_t TXIE; // USB Transmit Interrupt Enable
|
|
__IO uint16_t RXIE; // USB Receive Interrupt Enable
|
|
__I uint8_t IS; // USB General Interrupt Status
|
|
__IO uint8_t IE; // USB Interrupt Enable
|
|
__I uint16_t FRAME; // USB Frame Value
|
|
__IO uint8_t EPIDX; // USB Endpoint Index
|
|
__IO uint8_t TEST; // USB Test Mode
|
|
uint8_t RESERVED1[16];
|
|
__IO uint32_t FIFO0; // USB FIFO Endpoint 0
|
|
__IO uint32_t FIFO1; // USB FIFO Endpoint 1
|
|
__IO uint32_t FIFO2; // USB FIFO Endpoint 2
|
|
__IO uint32_t FIFO3; // USB FIFO Endpoint 3
|
|
uint8_t RESERVED2[48];
|
|
__IO uint8_t DEVCTL; // USB Device Control
|
|
uint8_t RESERVED3[1];
|
|
__IO uint8_t TXFIFOSZ; // USB Transmit Dynamic FIFO Sizing
|
|
__IO uint8_t RXFIFOSZ; // USB Receive Dynamic FIFO Sizing
|
|
__IO uint16_t TXFIFOADD; // USB Transmit FIFO Start Address
|
|
__IO uint16_t RXFIFOADD; // USB Receive FIFO Start Address
|
|
uint8_t RESERVED4[18];
|
|
__IO uint8_t CONTIM; // USB Connect Timing
|
|
__IO uint8_t VPLEN; // USB OTG VBus Pulse Timing
|
|
uint8_t RESERVED5[1];
|
|
__IO uint8_t FSEOF; // USB Full-Speed Last Transaction to End
|
|
// of Frame Timing
|
|
__IO uint8_t LSEOF; // USB Low-Speed Last Transaction to End of
|
|
// Frame Timing
|
|
uint8_t RESERVED6[1];
|
|
__IO uint8_t TXFUNCADDR0; // USB Transmit Functional Address
|
|
// Endpoint 0
|
|
uint8_t RESERVED7[1];
|
|
__IO uint8_t TXHUBADDR0; // USB Transmit Hub Address Endpoint 0
|
|
__IO uint8_t TXHUBPORT0; // USB Transmit Hub Port Endpoint 0
|
|
uint8_t RESERVED8[4];
|
|
__IO uint8_t TXFUNCADDR1; // USB Transmit Functional Address
|
|
// Endpoint 1
|
|
uint8_t RESERVED9[1];
|
|
__IO uint8_t TXHUBADDR1; // USB Transmit Hub Address Endpoint 1
|
|
__IO uint8_t TXHUBPORT1; // USB Transmit Hub Port Endpoint 1
|
|
__IO uint8_t RXFUNCADDR1; // USB Receive Functional Address
|
|
// Endpoint 1
|
|
uint8_t RESERVED10[1];
|
|
__IO uint8_t RXHUBADDR1; // USB Receive Hub Address Endpoint 1
|
|
__IO uint8_t RXHUBPORT1; // USB Receive Hub Port Endpoint 1
|
|
__IO uint8_t TXFUNCADDR2; // USB Transmit Functional Address
|
|
// Endpoint 2
|
|
uint8_t RESERVED11[1];
|
|
__IO uint8_t TXHUBADDR2; // USB Transmit Hub Address Endpoint 2
|
|
__IO uint8_t TXHUBPORT2; // USB Transmit Hub Port Endpoint 2
|
|
__IO uint8_t RXFUNCADDR2; // USB Receive Functional Address
|
|
// Endpoint 2
|
|
uint8_t RESERVED12[1];
|
|
__IO uint8_t RXHUBADDR2; // USB Receive Hub Address Endpoint 2
|
|
__IO uint8_t RXHUBPORT2; // USB Receive Hub Port Endpoint 2
|
|
__IO uint8_t TXFUNCADDR3; // USB Transmit Functional Address
|
|
// Endpoint 3
|
|
uint8_t RESERVED13[1];
|
|
__IO uint8_t TXHUBADDR3; // USB Transmit Hub Address Endpoint 3
|
|
__IO uint8_t TXHUBPORT3; // USB Transmit Hub Port Endpoint 3
|
|
__IO uint8_t RXFUNCADDR3; // USB Receive Functional Address
|
|
// Endpoint 3
|
|
uint8_t RESERVED14[1];
|
|
__IO uint8_t RXHUBADDR3; // USB Receive Hub Address Endpoint 3
|
|
__IO uint8_t RXHUBPORT3; // USB Receive Hub Port Endpoint 3
|
|
uint8_t RESERVED15[98];
|
|
__O uint8_t CSRL0; // USB Control and Status Endpoint 0 Low
|
|
__O uint8_t CSRH0; // USB Control and Status Endpoint 0 High
|
|
uint8_t RESERVED16[4];
|
|
__I uint8_t COUNT0; // USB Receive Byte Count Endpoint 0
|
|
uint8_t RESERVED17[1];
|
|
__IO uint8_t TYPE0; // USB Type Endpoint 0
|
|
__IO uint8_t NAKLMT; // USB NAK Limit
|
|
uint8_t RESERVED18[4];
|
|
__IO uint16_t TXMAXP1; // USB Maximum Transmit Data Endpoint 1
|
|
__IO uint8_t TXCSRL1; // USB Transmit Control and Status
|
|
// Endpoint 1 Low
|
|
__IO uint8_t TXCSRH1; // USB Transmit Control and Status
|
|
// Endpoint 1 High
|
|
__IO uint16_t RXMAXP1; // USB Maximum Receive Data Endpoint 1
|
|
__IO uint8_t RXCSRL1; // USB Receive Control and Status
|
|
// Endpoint 1 Low
|
|
__IO uint8_t RXCSRH1; // USB Receive Control and Status
|
|
// Endpoint 1 High
|
|
__I uint16_t RXCOUNT1; // USB Receive Byte Count Endpoint 1
|
|
__IO uint8_t TXTYPE1; // USB Host Transmit Configure Type
|
|
// Endpoint 1
|
|
__IO uint8_t TXINTERVAL1; // USB Host Transmit Interval Endpoint 1
|
|
__IO uint8_t RXTYPE1; // USB Host Configure Receive Type
|
|
// Endpoint 1
|
|
__IO uint8_t RXINTERVAL1; // USB Host Receive Polling Interval
|
|
// Endpoint 1
|
|
uint8_t RESERVED19[2];
|
|
__IO uint16_t TXMAXP2; // USB Maximum Transmit Data Endpoint 2
|
|
__IO uint8_t TXCSRL2; // USB Transmit Control and Status
|
|
// Endpoint 2 Low
|
|
__IO uint8_t TXCSRH2; // USB Transmit Control and Status
|
|
// Endpoint 2 High
|
|
__IO uint16_t RXMAXP2; // USB Maximum Receive Data Endpoint 2
|
|
__IO uint8_t RXCSRL2; // USB Receive Control and Status
|
|
// Endpoint 2 Low
|
|
__IO uint8_t RXCSRH2; // USB Receive Control and Status
|
|
// Endpoint 2 High
|
|
__I uint16_t RXCOUNT2; // USB Receive Byte Count Endpoint 2
|
|
__IO uint8_t TXTYPE2; // USB Host Transmit Configure Type
|
|
// Endpoint 2
|
|
__IO uint8_t TXINTERVAL2; // USB Host Transmit Interval Endpoint 2
|
|
__IO uint8_t RXTYPE2; // USB Host Configure Receive Type
|
|
// Endpoint 2
|
|
__IO uint8_t RXINTERVAL2; // USB Host Receive Polling Interval
|
|
// Endpoint 2
|
|
uint8_t RESERVED20[2];
|
|
__IO uint16_t TXMAXP3; // USB Maximum Transmit Data Endpoint 3
|
|
__IO uint8_t TXCSRL3; // USB Transmit Control and Status
|
|
// Endpoint 3 Low
|
|
__IO uint8_t TXCSRH3; // USB Transmit Control and Status
|
|
// Endpoint 3 High
|
|
__IO uint16_t RXMAXP3; // USB Maximum Receive Data Endpoint 3
|
|
__IO uint8_t RXCSRL3; // USB Receive Control and Status
|
|
// Endpoint 3 Low
|
|
__IO uint8_t RXCSRH3; // USB Receive Control and Status
|
|
// Endpoint 3 High
|
|
__I uint16_t RXCOUNT3; // USB Receive Byte Count Endpoint 3
|
|
__IO uint8_t TXTYPE3; // USB Host Transmit Configure Type
|
|
// Endpoint 3
|
|
__IO uint8_t TXINTERVAL3; // USB Host Transmit Interval Endpoint 3
|
|
__IO uint8_t RXTYPE3; // USB Host Configure Receive Type
|
|
// Endpoint 3
|
|
__IO uint8_t RXINTERVAL3; // USB Host Receive Polling Interval
|
|
// Endpoint 3
|
|
uint8_t RESERVED21[454];
|
|
__IO uint16_t RQPKTCOUNT1; // USB Request Packet Count in Block
|
|
// Transfer Endpoint 1
|
|
uint8_t RESERVED22[2];
|
|
__IO uint16_t RQPKTCOUNT2; // USB Request Packet Count in Block
|
|
// Transfer Endpoint 2
|
|
uint8_t RESERVED23[2];
|
|
__IO uint16_t RQPKTCOUNT3; // USB Request Packet Count in Block
|
|
// Transfer Endpoint 3
|
|
uint8_t RESERVED24[50];
|
|
__IO uint16_t RXDPKTBUFDIS; // USB Receive Double Packet Buffer Disable
|
|
__IO uint16_t TXDPKTBUFDIS; // USB Transmit Double Packet Buffer
|
|
// Disable
|
|
uint8_t RESERVED25[188];
|
|
__IO uint32_t EPC; // USB External Power Control
|
|
__I uint32_t EPCRIS; // USB External Power Control Raw Interrupt Status
|
|
__IO uint32_t EPCIM; // USB External Power Control Interrupt
|
|
// Mask
|
|
__IO uint32_t EPCISC; // USB External Power Control Interrupt
|
|
// Status and Clear
|
|
__I uint32_t DRRIS; // USB Device Resume Raw Interrupt Status
|
|
__IO uint32_t DRIM; // USB Device Resume Interrupt Mask
|
|
__O uint32_t DRISC; // USB Device Resume Interrupt Status and
|
|
// Clear
|
|
__IO uint32_t GPCS; // USB General-Purpose Control and Status
|
|
} USB_Type;
|
|
// </g>
|
|
|
|
/*---------- Watchdog Timer (WDT) -----------*/
|
|
// <g> Watchdog Timer (WDT)
|
|
typedef struct
|
|
{
|
|
__IO uint32_t LOAD; // Load register
|
|
__I uint32_t VALUE; // Current value register
|
|
__IO uint32_t CTL; // Control register
|
|
__O uint32_t ICR; // Interrupt clear register
|
|
__I uint32_t RIS; // Raw interrupt status register
|
|
__I uint32_t MIS; // Masked interrupt status register
|
|
uint8_t RESERVED0[1024];
|
|
__IO uint32_t TEST; // Test register
|
|
uint8_t RESERVED1[2020];
|
|
__IO uint32_t LOCK; // Lock register
|
|
} WDT_Type;
|
|
// </g>
|
|
|
|
/******************************************************************************/
|
|
/* Memory map */
|
|
/******************************************************************************/
|
|
|
|
#define FLASH_BASE (0x00000000UL)
|
|
#define RAM_BASE (0x20000000UL)
|
|
#define PERIPH_BASE (0x40000000UL)
|
|
|
|
#define WATCHDOG_BASE 0x40000000 // Watchdog
|
|
#define GPIO_PORTA_BASE 0x40004000 // GPIO Port A
|
|
#define GPIO_PORTB_BASE 0x40005000 // GPIO Port B
|
|
#define GPIO_PORTC_BASE 0x40006000 // GPIO Port C
|
|
#define GPIO_PORTD_BASE 0x40007000 // GPIO Port D
|
|
#define SSI0_BASE 0x40008000 // SSI0
|
|
#define SSI1_BASE 0x40009000 // SSI1
|
|
#define UART0_BASE 0x4000C000 // UART0
|
|
#define UART1_BASE 0x4000D000 // UART1
|
|
#define UART2_BASE 0x4000E000 // UART2
|
|
#define I2C0_MASTER_BASE 0x40020000 // I2C0 Master
|
|
#define I2C0_SLAVE_BASE 0x40020800 // I2C0 Slave
|
|
#define I2C1_MASTER_BASE 0x40021000 // I2C1 Master
|
|
#define I2C1_SLAVE_BASE 0x40021800 // I2C1 Slave
|
|
#define GPIO_PORTE_BASE 0x40024000 // GPIO Port E
|
|
#define GPIO_PORTF_BASE 0x40025000 // GPIO Port F
|
|
#define GPIO_PORTG_BASE 0x40026000 // GPIO Port G
|
|
#define GPIO_PORTH_BASE 0x40027000 // GPIO Port H
|
|
#define PWM_BASE 0x40028000 // PWM
|
|
#define PWM_GEN_0_OFFSET 0x00000040 // PWM0 base
|
|
#define PWM_GEN_1_OFFSET 0x00000080 // PWM1 base
|
|
#define PWM_GEN_2_OFFSET 0x000000C0 // PWM2 base
|
|
#define PWM_GEN_3_OFFSET 0x00000100 // PWM3 base
|
|
#define QEI0_BASE 0x4002C000 // QEI0
|
|
#define QEI1_BASE 0x4002D000 // QEI1
|
|
#define TIMER0_BASE 0x40030000 // Timer0
|
|
#define TIMER1_BASE 0x40031000 // Timer1
|
|
#define TIMER2_BASE 0x40032000 // Timer2
|
|
#define TIMER3_BASE 0x40033000 // Timer3
|
|
#define ADC_BASE 0x40038000 // ADC
|
|
#define COMP_BASE 0x4003C000 // Analog comparators
|
|
#define CAN0_BASE 0x40040000 // CAN0
|
|
#define CAN1_BASE 0x40041000 // CAN1
|
|
#define CAN2_BASE 0x40042000 // CAN2
|
|
#define ETH_BASE 0x40048000 // Ethernet
|
|
#define MAC_BASE 0x40048000 // Ethernet
|
|
#define USB0_BASE 0x40050000 // USB 0 Controller
|
|
#define GPIO_PORTA_AHB_BASE 0x40058000 // GPIO Port A (high speed)
|
|
#define GPIO_PORTB_AHB_BASE 0x40059000 // GPIO Port B (high speed)
|
|
#define GPIO_PORTC_AHB_BASE 0x4005A000 // GPIO Port C (high speed)
|
|
#define GPIO_PORTD_AHB_BASE 0x4005B000 // GPIO Port D (high speed)
|
|
#define GPIO_PORTE_AHB_BASE 0x4005C000 // GPIO Port E (high speed)
|
|
#define GPIO_PORTF_AHB_BASE 0x4005D000 // GPIO Port F (high speed)
|
|
#define GPIO_PORTG_AHB_BASE 0x4005E000 // GPIO Port G (high speed)
|
|
#define GPIO_PORTH_AHB_BASE 0x4005F000 // GPIO Port H (high speed)
|
|
#define HIB_BASE 0x400FC000 // Hibernation Module
|
|
#define FLASH_CTRL_BASE 0x400FD000 // FLASH Controller
|
|
#define SYSCTL_BASE 0x400FE000 // System Control
|
|
#define UDMA_BASE 0x400FF000 // uDMA Controller
|
|
|
|
/******************************************************************************/
|
|
/* Peripheral declaration */
|
|
/******************************************************************************/
|
|
|
|
#define SYSCTL ((SYSCTL_Type *)SYSCTL_BASE)
|
|
|
|
#define GPIOA ((GPIO_Type *)GPIO_PORTA_BASE)
|
|
#define GPIOB ((GPIO_Type *)GPIO_PORTB_BASE)
|
|
#define GPIOC ((GPIO_Type *)GPIO_PORTC_BASE)
|
|
#define GPIOD ((GPIO_Type *)GPIO_PORTD_BASE)
|
|
#define GPIOE ((GPIO_Type *)GPIO_PORTE_BASE)
|
|
#define GPIOF ((GPIO_Type *)GPIO_PORTF_BASE)
|
|
#define GPIOG ((GPIO_Type *)GPIO_PORTG_BASE)
|
|
#define GPIOA_HS ((GPIO_Type *)GPIO_PORTA_AHB_BASE)
|
|
#define GPIOB_HS ((GPIO_Type *)GPIO_PORTB_AHB_BASE)
|
|
#define GPIOC_HS ((GPIO_Type *)GPIO_PORTC_AHB_BASE)
|
|
#define GPIOD_HS ((GPIO_Type *)GPIO_PORTD_AHB_BASE)
|
|
#define GPIOE_HS ((GPIO_Type *)GPIO_PORTE_AHB_BASE)
|
|
#define GPIOF_HS ((GPIO_Type *)GPIO_PORTF_AHB_BASE)
|
|
#define GPIOG_HS ((GPIO_Type *)GPIO_PORTG_AHB_BASE)
|
|
|
|
#define TIMER0 ((TIMER_Type *)TIMER0_BASE)
|
|
#define TIMER1 ((TIMER_Type *)TIMER1_BASE)
|
|
#define TIMER2 ((TIMER_Type *)TIMER2_BASE)
|
|
#define TIMER3 ((TIMER_Type *)TIMER3_BASE)
|
|
|
|
#define ADC ((ADC_Type *)ADC_BASE)
|
|
|
|
#define COMP ((COMP_Type *)COMP_BASE)
|
|
|
|
#define CAN0 ((CAN_Type *)CAN0_BASE)
|
|
#define CAN1 ((CAN_Type *)CAN1_BASE)
|
|
#define CAN2 ((CAN_Type *)CAN2_BASE)
|
|
|
|
#define ETH ((MAC_Type *)ETH_BASE)
|
|
|
|
#define FLASH_CTRL ((FLASH_Type *)FLASH_CTRL_BASE)
|
|
|
|
#define HIB ((HIB_Type *)HIB_BASE)
|
|
|
|
#define I2C0_MASTER ((I2C_MASTER_Type *)I2C0_MASTER_BASE)
|
|
#define I2C0_SLAVE ((I2C_SLAVE_Type *)I2C0_SLAVE_BASE)
|
|
#define I2C1_MASTER ((I2C_MASTER_Type *)I2C1_MASTER_BASE)
|
|
#define I2C1_SLAVE ((I2C_SLAVE_Type *)I2C1_SLAVE_BASE)
|
|
|
|
#define PWM ((PWM_Type *)PWM_BASE)
|
|
#define PWMGEN0 ((PWMGEN_Type *)(PWM_BASE + PWM_GEN_0_OFFSET))
|
|
#define PWMGEN1 ((PWMGEN_Type *)(PWM_BASE + PWM_GEN_1_OFFSET))
|
|
#define PWMGEN2 ((PWMGEN_Type *)(PWM_BASE + PWM_GEN_2_OFFSET))
|
|
#define PWMGEN3 ((PWMGEN_Type *)(PWM_BASE + PWM_GEN_3_OFFSET))
|
|
|
|
#define QEI0 ((QEI_Type *)QEI0_BASE)
|
|
#define QEI1 ((QEI_Type *)QEI1_BASE)
|
|
|
|
#define SSI0 ((SSI_Type *)SSI0_BASE)
|
|
#define SSI1 ((SSI_Type *)SSI1_BASE)
|
|
|
|
#define UART0 ((UART_Type *)UART0_BASE)
|
|
#define UART1 ((UART_Type *)UART1_BASE)
|
|
#define UART2 ((UART_Type *)UART2_BASE)
|
|
|
|
#define UDMA ((UDMA_Type *)UDMA_BASE)
|
|
|
|
#define USB0 ((USB_Type *)USB0_BASE)
|
|
|
|
#define WDT ((WDT_Type *)WATCHDOG_BASE)
|
|
|
|
#endif /* __LM3_CMSIS_H__ */
|