diff options
author | marcoveeneman <marco-veeneman@hotmail.com> | 2014-10-13 23:01:10 +0200 |
---|---|---|
committer | marcoveeneman <marco-veeneman@hotmail.com> | 2014-10-13 23:01:10 +0200 |
commit | b74008c8490fbd6f27392c0badd3de5b6792fc09 (patch) | |
tree | 48ae35cc8b12b478edabb854bba972ce87961b98 /os/hal/ports/TIVA/TM4C123x | |
parent | ed9baddee35122aa2654f3178148fee0d65b9547 (diff) | |
download | ChibiOS-Contrib-b74008c8490fbd6f27392c0badd3de5b6792fc09.tar.gz ChibiOS-Contrib-b74008c8490fbd6f27392c0badd3de5b6792fc09.tar.bz2 ChibiOS-Contrib-b74008c8490fbd6f27392c0badd3de5b6792fc09.zip |
Added Tiva HAL files.
Diffstat (limited to 'os/hal/ports/TIVA/TM4C123x')
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/hal_lld.c | 138 | ||||
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/hal_lld.h | 366 | ||||
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/platform.mk | 14 | ||||
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/tiva_isr.h | 643 | ||||
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/tiva_registry.h | 492 | ||||
-rw-r--r-- | os/hal/ports/TIVA/TM4C123x/tm4c123x.h | 962 |
6 files changed, 2615 insertions, 0 deletions
diff --git a/os/hal/ports/TIVA/TM4C123x/hal_lld.c b/os/hal/ports/TIVA/TM4C123x/hal_lld.c new file mode 100644 index 0000000..7a6046d --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/hal_lld.c @@ -0,0 +1,138 @@ +/* + Copyright (C) 2014 Marco Veeneman + + 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. +*/ + +/** + * @file TIVA/TM4C123x/hal_lld.c + * @brief TM4C123x HAL Driver subsystem low level driver source. + * + * @addtogroup HAL + * @{ + */ + +#include "hal.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Low level HAL driver initialization. + * + * @notapi + */ +void hal_lld_init(void) +{ +} + +/** + * @brief TM4C123x clocks and PLL initialization. + * @note All the involved constants come from the file @p board.h and + * @p mcuconf.h. + * @note This function should be invoked just after the system reset. + * + * @special + */ +void tiva_clock_init(void) +{ + uint32_t rcc, rcc2, i; + + /* 1. Bypass the PLL and system clock divider by setting the BYPASS bit and + * clearing the USESYSDIV bit in the RCC register, thereby configuring the + * microcontroller to run off a "raw" clock source and allowing for the new + * PLL configuration to be validated before switching the system clock to the + * PLL. */ + /* read */ + + rcc = SYSCTL->RCC; + rcc2 = SYSCTL->RCC2; + + /* modify */ + rcc |= TIVA_RCC_BYPASS; + rcc &= ~TIVA_RCC_USESYSDIV; + rcc2 |= TIVA_RCC2_BYPASS2 | TIVA_RCC2_USERCC2; + + /* write */ + SYSCTL->RCC = rcc; + SYSCTL->RCC2 = rcc2; + + /* 2 Select the crystal value (XTAL) and oscillator source (OSCSRC), and + * clear the PWRDN bit in RCC and RCC2. Setting the XTAL field automatically + * pulls valid PLL configuration data for the appropriate crystal, and + * clearing the PWRDN bit powers and enables the PLL and its output. */ + /* modify */ + rcc &= ~(TIVA_RCC_OSCSRC_MASK | TIVA_RCC_XTAL_MASK | TIVA_RCC_PWRDN | TIVA_RCC_MOSCDIS); + rcc |= ((TIVA_XTAL | TIVA_OSCSRC | TIVA_MOSCDIS) & (TIVA_RCC_XTAL_MASK | TIVA_RCC_OSCSRC_MASK | TIVA_RCC_MOSCDIS)); + rcc2 &= ~(TIVA_RCC2_OSCSRC2_MASK | TIVA_RCC2_PWRDN2); + rcc2 |= ((TIVA_OSCSRC | TIVA_DIV400) & (TIVA_RCC2_OSCSRC2_MASK | TIVA_RCC2_DIV400)); + + /* write */ + SYSCTL->RCC = rcc; + SYSCTL->RCC2 = rcc2; + for(i = 100000; i; i--); + + /* 3. Select the desired system divider (SYSDIV) in RCC and RCC2 and set the + * USESYSDIV bit in RCC. The SYSDIV field determines the system frequency for + * the microcontroller. */ + /* modify */ + rcc &= ~TIVA_RCC_SYSDIV_MASK; + rcc |= (TIVA_SYSDIV & TIVA_RCC_SYSDIV_MASK) | TIVA_USESYSDIV; + rcc2 &= ~(TIVA_RCC2_SYSDIV2_MASK | TIVA_RCC2_SYSDIV2LSB); + rcc2 |= ((TIVA_SYSDIV2 | TIVA_SYSDIV2LSB) & (TIVA_RCC2_SYSDIV2_MASK | TIVA_RCC2_SYSDIV2LSB)); + + /* write */ + SYSCTL->RCC = rcc; + SYSCTL->RCC2 = rcc2; + + /* 4. Wait for the PLL to lock by polling the PLLLRIS bit in the Raw + * Interrupt Status (RIS) register. */ + while ((SYSCTL->RIS & SYSCTL_RIS_PLLLRIS) == 0); + + /* 5. Enable use of the PLL by clearing the BYPASS bit in RCC and RCC2. */ + rcc &= ~TIVA_RCC_BYPASS; + rcc2 &= ~TIVA_RCC2_BYPASS2; + rcc |= (TIVA_BYPASS_VALUE << 11); + rcc2 |= (TIVA_BYPASS_VALUE << 11); + SYSCTL->RCC = rcc; + SYSCTL->RCC2 = rcc2; + +#if HAL_USE_PWM + SYSCTL->RCC |= TIVA_PWM_FIELDS; +#endif +} + +/** + * @} + */ diff --git a/os/hal/ports/TIVA/TM4C123x/hal_lld.h b/os/hal/ports/TIVA/TM4C123x/hal_lld.h new file mode 100644 index 0000000..d8b856f --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/hal_lld.h @@ -0,0 +1,366 @@ +/* + Copyright (C) 2014 Marco Veeneman + + 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. +*/ + +/** + * @file Tiva/TM4C123x/hal_lld.h + * @brief TM4C123x HAL subsystem low level driver header. + * @pre This module requires the following macros to be defined in the + * @p board.h file: + * - TODO: add required macros + * + * @addtogroup HAL + * @{ + */ + +#ifndef _HAL_LLD_H_ +#define _HAL_LLD_H_ + +#include "tiva_registry.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/** + * @name Platform identification + * @{ + */ + +#define PLATFORM_NAME "Tiva C Series TM4C123x" + +/** + * @} + */ + +/** + * @name RCC register bits definitions + * @{ + */ + +#define TIVA_RCC_MOSCDIS (0x01 << 0) + +#define TIVA_RCC_OSCSRC_MASK (0x03 << 4) +#define TIVA_RCC_OSCSRC_MOSC (0x00 << 4) +#define TIVA_RCC_OSCSRC_PIOSC (0x01 << 4) +#define TIVA_RCC_OSCSRC_PIOSC_4 (0x02 << 4) +#define TIVA_RCC_OSCSRC_LFIOSC (0x03 << 4) + +#define TIVA_RCC_XTAL_MASK (0x1f << 6) +#define TIVA_RCC_XTAL_4000000 (0x06 << 6) +#define TIVA_RCC_XTAL_4096000 (0x07 << 6) +#define TIVA_RCC_XTAL_4915200 (0x08 << 6) +#define TIVA_RCC_XTAL_5000000 (0x09 << 6) +#define TIVA_RCC_XTAL_5120000 (0x0a << 6) +#define TIVA_RCC_XTAL_6000000 (0x0b << 6) +#define TIVA_RCC_XTAL_6144000 (0x0c << 6) +#define TIVA_RCC_XTAL_7372800 (0x0d << 6) +#define TIVA_RCC_XTAL_8000000 (0x0e << 6) +#define TIVA_RCC_XTAL_8192000 (0x0f << 6) +#define TIVA_RCC_XTAL_10000000 (0x10 << 6) +#define TIVA_RCC_XTAL_12000000 (0x11 << 6) +#define TIVA_RCC_XTAL_12288000 (0x12 << 6) +#define TIVA_RCC_XTAL_13560000 (0x13 << 6) +#define TIVA_RCC_XTAL_14318180 (0x14 << 6) +#define TIVA_RCC_XTAL_16000000 (0x15 << 6) +#define TIVA_RCC_XTAL_16384000 (0x16 << 6) +#define TIVA_RCC_XTAL_18000000 (0x17 << 6) +#define TIVA_RCC_XTAL_20000000 (0x18 << 6) +#define TIVA_RCC_XTAL_24000000 (0x19 << 6) +#define TIVA_RCC_XTAL_25000000 (0x1a << 6) + +#define TIVA_RCC_BYPASS (1 << 11) + +#define TIVA_RCC_PWRDN (1 << 13) + +#define TIVA_RCC_PWMDIV_MASK (0x07 << 17) +#define TIVA_RCC_PWMDIV_2 (0x00 << 17) +#define TIVA_RCC_PWMDIV_4 (0x01 << 17) +#define TIVA_RCC_PWMDIV_8 (0x02 << 17) +#define TIVA_RCC_PWMDIV_16 (0x03 << 17) +#define TIVA_RCC_PWMDIV_32 (0x04 << 17) +#define TIVA_RCC_PWMDIV_64 (0x07 << 17) + +#define TIVA_RCC_USEPWMDIV (1 << 20) + +#define TIVA_RCC_USESYSDIV (1 << 22) + +#define TIVA_RCC_SYSDIV_MASK (0x0f << 23) +#define TIVA_RCC_SYSDIV_1 (0x00 << 23) +#define TIVA_RCC_SYSDIV_2 (0x01 << 23) +#define TIVA_RCC_SYSDIV_3 (0x02 << 23) +#define TIVA_RCC_SYSDIV_4 (0x03 << 23) +#define TIVA_RCC_SYSDIV_5 (0x04 << 23) +#define TIVA_RCC_SYSDIV_6 (0x05 << 23) +#define TIVA_RCC_SYSDIV_7 (0x06 << 23) +#define TIVA_RCC_SYSDIV_8 (0x07 << 23) +#define TIVA_RCC_SYSDIV_9 (0x08 << 23) +#define TIVA_RCC_SYSDIV_10 (0x09 << 23) +#define TIVA_RCC_SYSDIV_11 (0x0a << 23) +#define TIVA_RCC_SYSDIV_12 (0x0b << 23) +#define TIVA_RCC_SYSDIV_13 (0x0c << 23) +#define TIVA_RCC_SYSDIV_14 (0x0d << 23) +#define TIVA_RCC_SYSDIV_15 (0x0e << 23) +#define TIVA_RCC_SYSDIV_16 (0x0f << 23) + +#define TIVA_RCC_ACG (1 << 27) + +/** + * @} + */ + +/** + * @name RCC2 register bits definitions + * @{ + */ + +#define TIVA_RCC2_OSCSRC2_MASK (0x07 << 4) +#define TIVA_RCC2_OSCSRC2_MOSC (0x00 << 4) +#define TIVA_RCC2_OSCSRC2_PIOSC (0x01 << 4) +#define TIVA_RCC2_OSCSRC2_PIOSC_4 (0x02 << 4) +#define TIVA_RCC2_OSCSRC2_LFIOSC (0x03 << 4) +#define TIVA_RCC2_OSCSRC2_32768 (0x07 << 4) + +#define TIVA_RCC2_BYPASS2 (1 << 11) + +#define TIVA_RCC2_PWRDN2 (1 << 13) + +#define TIVA_RCC2_USBPWRDN (1 << 14) + +#define TIVA_RCC2_SYSDIV2LSB (1 << 22) + +#define TIVA_RCC2_SYSDIV2_MASK (0x3f << 23) + +#define TIVA_RCC2_DIV400 (1 << 30) + +#define TIVA_RCC2_USERCC2 (1 << 31) + +/** + * @} + */ + +/** + * @name RIS register bits definitions + * @{ + */ + +#define SYSCTL_RIS_PLLLRIS (1 << 6) + +/** + * @} + */ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @name Configuration options + * @{ + */ + +#if !defined(TIVA_OSCSRC) +#define TIVA_OSCSRC TIVA_RCC2_OSCSRC2_MOSC +#endif + +#if !defined(TIVA_MOSC_ENABLE) +#define TIVA_MOSC_ENABLE TRUE +#endif + +#if !defined(TIVA_DIV400_VALUE) +#define TIVA_DIV400_VALUE 1 +#endif + +#if !defined(TIVA_SYSDIV_VALUE) +#define TIVA_SYSDIV_VALUE 2 +#endif + +#if !defined(TIVA_USESYSDIV_ENABLE) +#define TIVA_USESYSDIV_ENABLE FALSE +#endif + +#if !defined(TIVA_SYSDIV2LSB_ENABLE) +#define TIVA_SYSDIV2LSB_ENABLE FALSE +#endif + +#if !defined(TIVA_BYPASS_VALUE) +#define TIVA_BYPASS_VALUE 0 +#endif + +/** + * @} + */ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/* + * Configuration-related checks. + */ +#if !defined(TM4C123x_MCUCONF) +#error "Using a wrong mcuconf.h file, TM4C123x_MCUCONF not defined" +#endif + +/* + * Oscillator-related checks. + */ +#if !(TIVA_OSCSRC == TIVA_RCC2_OSCSRC2_MOSC) && \ + !(TIVA_OSCSRC == TIVA_RCC2_OSCSRC2_PIOSC) && \ + !(TIVA_OSCSRC == TIVA_RCC2_OSCSRC2_PIOSC_4) && \ + !(TIVA_OSCSRC == TIVA_RCC2_OSCSRC2_LFIOSC) && \ + !(TIVA_OSCSRC == TIVA_RCC2_OSCSRC2_32768) +#error "Invalid value for TIVA_OSCSRC defined" +#endif + +#if TIVA_XTAL_VALUE == 4000000 +#define TIVA_XTAL_ (0x06 << 6) +#elif TIVA_XTAL_VALUE == 4096000 +#define TIVA_XTAL_ (0x07 << 6) +#elif TIVA_XTAL_VALUE == 4915200 +#define TIVA_XTAL_ (0x08 << 6) +#elif TIVA_XTAL_VALUE == 5000000 +#define TIVA_XTAL_ (0x09 << 6) +#elif TIVA_XTAL_VALUE == 5120000 +#define TIVA_XTAL_ (0x0a << 6) +#elif TIVA_XTAL_VALUE == 6000000 +#define TIVA_XTAL_ (0x0b << 6) +#elif TIVA_XTAL_VALUE == 6144000 +#define TIVA_XTAL_ (0x0c << 6) +#elif TIVA_XTAL_VALUE == 7372800 +#define TIVA_XTAL_ (0x0d << 6) +#elif TIVA_XTAL_VALUE == 8000000 +#define TIVA_XTAL_ (0x0e << 6) +#elif TIVA_XTAL_VALUE == 8192000 +#define TIVA_XTAL_ (0x0f << 6) +#elif TIVA_XTAL_VALUE == 10000000 +#define TIVA_XTAL_ (0x10 << 6) +#elif TIVA_XTAL_VALUE == 12000000 +#define TIVA_XTAL_ (0x11 << 6) +#elif TIVA_XTAL_VALUE == 12288000 +#define TIVA_XTAL_ (0x12 << 6) +#elif TIVA_XTAL_VALUE == 13560000 +#define TIVA_XTAL_ (0x13 << 6) +#elif TIVA_XTAL_VALUE == 14318180 +#define TIVA_XTAL_ (0x14 << 6) +#elif TIVA_XTAL_VALUE == 16000000 +#define TIVA_XTAL_ (0x15 << 6) +#elif TIVA_XTAL_VALUE == 16384000 +#define TIVA_XTAL_ (0x16 << 6) +#elif TIVA_XTAL_VALUE == 18000000 +#define TIVA_XTAL_ (0x17 << 6) +#elif TIVA_XTAL_VALUE == 20000000 +#define TIVA_XTAL_ (0x18 << 6) +#elif TIVA_XTAL_VALUE == 24000000 +#define TIVA_XTAL_ (0x19 << 6) +#elif TIVA_XTAL_VALUE == 25000000 +#define TIVA_XTAL_ (0x1a << 6) +#else +#error "Invalid value for TIVA_XTAL_VALUE defined" +#endif + +#if TIVA_MOSC_ENABLE == TRUE +#define TIVA_MOSCDIS (0 << 0) +#define TIVA_XTAL TIVA_XTAL_ +#elif TIVA_MOSC_ENABLE == FALSE +#define TIVA_MOSCDIS (1 << 0) +#define TIVA_XTAL 0 +#else +#error "Invalid value for TIVA_MOSC_ENABLE defined" +#endif + +#if TIVA_DIV400_VALUE == 1 +#define TIVA_DIV400 (1 << 30) +#elif TIVA_DIV400_VALUE == 0 +#define TIVA_DIV400 (0 << 30) +#else +#error "Invalid value for TIVA_DIV400_VALUE defined" +#endif + +#if (TIVA_SYSDIV_VALUE >= 0x02) && (TIVA_SYSDIV_VALUE <= 0x3f) +#define TIVA_SYSDIV (TIVA_SYSDIV_VALUE << 23) +#define TIVA_SYSDIV2 (TIVA_SYSDIV_VALUE << 23) +#else +#error "Invalid value for TIVA_SYSDIV_VALUE defined" +#endif + +#if TIVA_USESYSDIV_ENABLE == TRUE +#define TIVA_USESYSDIV (1 << 22) +#elif TIVA_USESYSDIV_ENABLE == FALSE +#define TIVA_USESYSDIV (0 << 22) +#else +#error "Invalid value for TIVA_USESYSDIV_ENABLE defined" +#endif + +#if TIVA_SYSDIV2LSB_ENABLE == TRUE +#define TIVA_SYSDIV2LSB (1 << 22) +#elif TIVA_SYSDIV2LSB_ENABLE == FALSE +#define TIVA_SYSDIV2LSB (0 << 22) +#else +#error "Invalid value for TIVA_SYSDIV2LSB_ENABLE defined" +#endif + +#if TIVA_BYPASS_VALUE == 1 +#define TIVA_SRC 16000000 +#elif TIVA_BYPASS_VALUE == 0 +#define TIVA_SRC (200000000 + (TIVA_DIV400_VALUE * 200000000)) +#else +#error "Invalid value for TIVA_BYPASS_VALUE defined" +#endif + +#if (TIVA_OSCSRC == TIVA_RCC_OSCSRC_MOSC) && (TIVA_MOSC_ENABLE == FALSE) +#error "Main Oscillator selected but not enabled" +#endif + +/* + * System Clock calculation + */ +#define TIVA_SYSCLK (TIVA_SRC / (((TIVA_SYSDIV_VALUE << TIVA_DIV400_VALUE /*& TIVA_BYPASS_VALUE*/) | (TIVA_SYSDIV2LSB >> 22)) + 1)) + +#if OSAL_ST_MODE == OSAL_ST_MODE_PERIODIC && \ + !CORTEX_IS_VALID_KERNEL_PRIORITY(TIVA_ST_IRQ_PRIORITY) +#error "Invalid IRQ priority assigned to SysTick" +#endif + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/* Various helpers.*/ +#include "nvic.h" +#include "tiva_isr.h" + +#ifdef __cplusplus +extern "C" { +#endif + void hal_lld_init(void); + void tiva_clock_init(void); +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_LLD_H_ */ + +/** + * @} + */ diff --git a/os/hal/ports/TIVA/TM4C123x/platform.mk b/os/hal/ports/TIVA/TM4C123x/platform.mk new file mode 100644 index 0000000..3051cd3 --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/platform.mk @@ -0,0 +1,14 @@ +# List of all the TM4C123x platform files. +PLATFORMSRC = ${CHIBIOS}/os/hal/ports/common/ARMCMx/nvic.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/TM4C123x/hal_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/st_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/pal_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/serial_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/i2c_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/gpt_lld.c \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD/pwm_lld.c + +# Required include directories +PLATFORMINC = ${CHIBIOS}/os/hal/ports/common/ARMCMx \ + ${CHIBIOS}/community/os/hal/ports/TIVA/TM4C123x \ + ${CHIBIOS}/community/os/hal/ports/TIVA/LLD diff --git a/os/hal/ports/TIVA/TM4C123x/tiva_isr.h b/os/hal/ports/TIVA/TM4C123x/tiva_isr.h new file mode 100644 index 0000000..a7bd264 --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/tiva_isr.h @@ -0,0 +1,643 @@ +/* + Copyright (C) 2014 Marco Veeneman + + 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. +*/ + +/** + * @file TM4C123x/tiva_isr.h + * @brief TM4C123x ISR remapper driver header. + * + * @addtogroup TM4C123x_ISR + * @{ + */ + +#ifndef _TIVA_ISR_H_ +#define _TIVA_ISR_H_ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/** + * @name ISR names and numbers remapping + * @{ + */ + +/* GPIO units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) \ + || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) || defined(TM4C1236D5PM) \ + || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) || defined(TM4C123AE6PM) \ + || defined(TM4C123AH6PM) || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) +#define TIVA_GPIOA_HANDLER Vector40 +#define TIVA_GPIOB_HANDLER Vector44 +#define TIVA_GPIOC_HANDLER Vector48 +#define TIVA_GPIOD_HANDLER Vector4C +#define TIVA_GPIOE_HANDLER Vector50 +#define TIVA_GPIOF_HANDLER VectorB8 +#define TIVA_GPIOG_HANDLER VectorBC + +#define TIVA_GPIOA_NUMBER 0 +#define TIVA_GPIOB_NUMBER 1 +#define TIVA_GPIOC_NUMBER 2 +#define TIVA_GPIOD_NUMBER 3 +#define TIVA_GPIOE_NUMBER 4 +#define TIVA_GPIOF_NUMBER 30 +#define TIVA_GPIOG_NUMBER 31 +#endif +#if defined(TM4C1231C3PM) || defined(TM4C1231D5PM) || defined(TM4C1231E6PM) \ + || defined(TM4C1231H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233E6PM) || defined(TM4C1233H6PM) || defined(TM4C1237D5PM) \ + || defined(TM4C1237E6PM) || defined(TM4C1237H6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_GPIOA_HANDLER Vector40 +#define TIVA_GPIOB_HANDLER Vector44 +#define TIVA_GPIOC_HANDLER Vector48 +#define TIVA_GPIOD_HANDLER Vector4C +#define TIVA_GPIOE_HANDLER Vector50 +#define TIVA_GPIOF_HANDLER VectorB8 + +#define TIVA_GPIOA_NUMBER 0 +#define TIVA_GPIOB_NUMBER 1 +#define TIVA_GPIOC_NUMBER 2 +#define TIVA_GPIOD_NUMBER 3 +#define TIVA_GPIOE_NUMBER 4 +#define TIVA_GPIOF_NUMBER 30 +#endif +#if defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) || defined(TM4C1231H6PZ) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) || defined(TM4C1233H6PZ) \ + || defined(TM4C1237D5PZ) || defined(TM4C1237E6PZ) || defined(TM4C1237H6PZ) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PZ) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PZ) +#define TIVA_GPIOA_HANDLER Vector40 +#define TIVA_GPIOB_HANDLER Vector44 +#define TIVA_GPIOC_HANDLER Vector48 +#define TIVA_GPIOD_HANDLER Vector4C +#define TIVA_GPIOE_HANDLER Vector50 +#define TIVA_GPIOF_HANDLER VectorB8 +#define TIVA_GPIOG_HANDLER VectorBC +#define TIVA_GPIOH_HANDLER VectorC0 +#define TIVA_GPIOJ_HANDLER Vector118 +#define TIVA_GPIOK_HANDLER Vector11C +#define TIVA_GPIOL_HANDLER Vector120 + +#define TIVA_GPIOA_NUMBER 0 +#define TIVA_GPIOB_NUMBER 1 +#define TIVA_GPIOC_NUMBER 2 +#define TIVA_GPIOD_NUMBER 3 +#define TIVA_GPIOE_NUMBER 4 +#define TIVA_GPIOF_NUMBER 30 +#define TIVA_GPIOG_NUMBER 31 +#define TIVA_GPIOH_NUMBER 32 +#define TIVA_GPIOJ_NUMBER 54 +#define TIVA_GPIOK_NUMBER 55 +#define TIVA_GPIOL_NUMBER 56 +#endif +#if defined(TM4C1231H6PGE) || defined(TM4C1233H6PGE) || defined(TM4C1237H6PGE)\ + || defined(TM4C123BH6PGE) || defined(TM4C123GH6PGE) +#define TIVA_GPIOA_HANDLER Vector40 +#define TIVA_GPIOB_HANDLER Vector44 +#define TIVA_GPIOC_HANDLER Vector48 +#define TIVA_GPIOD_HANDLER Vector4C +#define TIVA_GPIOE_HANDLER Vector50 +#define TIVA_GPIOF_HANDLER VectorB8 +#define TIVA_GPIOG_HANDLER VectorBC +#define TIVA_GPIOH_HANDLER VectorC0 +#define TIVA_GPIOJ_HANDLER Vector118 +#define TIVA_GPIOK_HANDLER Vector11C +#define TIVA_GPIOL_HANDLER Vector120 +#define TIVA_GPIOM_HANDLER Vector1FC +#define TIVA_GPION_HANDLER Vector200 +#define TIVA_GPIOP0_HANDLER Vector210 +#define TIVA_GPIOP1_HANDLER Vector214 +#define TIVA_GPIOP2_HANDLER Vector218 +#define TIVA_GPIOP3_HANDLER Vector21C +#define TIVA_GPIOP4_HANDLER Vector220 +#define TIVA_GPIOP5_HANDLER Vector224 +#define TIVA_GPIOP6_HANDLER Vector228 +#define TIVA_GPIOP7_HANDLER Vector22C + +#define TIVA_GPIOA_NUMBER 0 +#define TIVA_GPIOB_NUMBER 1 +#define TIVA_GPIOC_NUMBER 2 +#define TIVA_GPIOD_NUMBER 3 +#define TIVA_GPIOE_NUMBER 4 +#define TIVA_GPIOF_NUMBER 30 +#define TIVA_GPIOG_NUMBER 31 +#define TIVA_GPIOH_NUMBER 32 +#define TIVA_GPIOJ_NUMBER 54 +#define TIVA_GPIOK_NUMBER 55 +#define TIVA_GPIOL_NUMBER 56 +#define TIVA_GPIOM_NUMBER 111 +#define TIVA_GPION_NUMBER 112 +#define TIVA_GPIOP0_NUMBER 116 +#define TIVA_GPIOP1_NUMBER 117 +#define TIVA_GPIOP2_NUMBER 118 +#define TIVA_GPIOP3_NUMBER 119 +#define TIVA_GPIOP4_NUMBER 120 +#define TIVA_GPIOP5_NUMBER 121 +#define TIVA_GPIOP6_NUMBER 122 +#define TIVA_GPIOP7_NUMBER 123 +#endif +#if defined(TM4C123BH6ZRB) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_GPIOA_HANDLER Vector40 +#define TIVA_GPIOB_HANDLER Vector44 +#define TIVA_GPIOC_HANDLER Vector48 +#define TIVA_GPIOD_HANDLER Vector4C +#define TIVA_GPIOE_HANDLER Vector50 +#define TIVA_GPIOF_HANDLER VectorB8 +#define TIVA_GPIOG_HANDLER VectorBC +#define TIVA_GPIOH_HANDLER VectorC0 +#define TIVA_GPIOJ_HANDLER Vector118 +#define TIVA_GPIOK_HANDLER Vector11C +#define TIVA_GPIOL_HANDLER Vector120 +#define TIVA_GPIOM_HANDLER Vector1FC +#define TIVA_GPION_HANDLER Vector200 +#define TIVA_GPIOP0_HANDLER Vector210 +#define TIVA_GPIOP1_HANDLER Vector214 +#define TIVA_GPIOP2_HANDLER Vector218 +#define TIVA_GPIOP3_HANDLER Vector21C +#define TIVA_GPIOP4_HANDLER Vector220 +#define TIVA_GPIOP5_HANDLER Vector224 +#define TIVA_GPIOP6_HANDLER Vector228 +#define TIVA_GPIOP7_HANDLER Vector22C +#define TIVA_GPIOQ0_HANDLER Vector230 +#define TIVA_GPIOQ1_HANDLER Vector234 +#define TIVA_GPIOQ2_HANDLER Vector238 +#define TIVA_GPIOQ3_HANDLER Vector23C +#define TIVA_GPIOQ4_HANDLER Vector240 +#define TIVA_GPIOQ5_HANDLER Vector244 +#define TIVA_GPIOQ6_HANDLER Vector248 +#define TIVA_GPIOQ7_HANDLER Vector24C + +#define TIVA_GPIOA_NUMBER 0 +#define TIVA_GPIOB_NUMBER 1 +#define TIVA_GPIOC_NUMBER 2 +#define TIVA_GPIOD_NUMBER 3 +#define TIVA_GPIOE_NUMBER 4 +#define TIVA_GPIOF_NUMBER 30 +#define TIVA_GPIOG_NUMBER 31 +#define TIVA_GPIOH_NUMBER 32 +#define TIVA_GPIOJ_NUMBER 54 +#define TIVA_GPIOK_NUMBER 55 +#define TIVA_GPIOL_NUMBER 56 +#define TIVA_GPIOM_NUMBER 111 +#define TIVA_GPION_NUMBER 112 +#define TIVA_GPIOP0_NUMBER 116 +#define TIVA_GPIOP1_NUMBER 117 +#define TIVA_GPIOP2_NUMBER 118 +#define TIVA_GPIOP3_NUMBER 119 +#define TIVA_GPIOP4_NUMBER 120 +#define TIVA_GPIOP5_NUMBER 121 +#define TIVA_GPIOP6_NUMBER 122 +#define TIVA_GPIOP7_NUMBER 123 +#define TIVA_GPIOQ0_NUMBER 124 +#define TIVA_GPIOQ1_NUMBER 125 +#define TIVA_GPIOQ2_NUMBER 126 +#define TIVA_GPIOQ3_NUMBER 127 +#define TIVA_GPIOQ4_NUMBER 128 +#define TIVA_GPIOQ5_NUMBER 129 +#define TIVA_GPIOQ6_NUMBER 130 +#define TIVA_GPIOQ7_NUMBER 131 +#endif + +/* GPTM units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_GPT0A_HANDLER Vector8C +#define TIVA_GPT0B_HANDLER Vector90 +#define TIVA_GPT1A_HANDLER Vector94 +#define TIVA_GPT1B_HANDLER Vector98 +#define TIVA_GPT2A_HANDLER Vector9C +#define TIVA_GPT2B_HANDLER VectorA0 +#define TIVA_GPT3A_HANDLER VectorCC +#define TIVA_GPT3B_HANDLER VectorD0 +#define TIVA_GPT4A_HANDLER Vector158 +#define TIVA_GPT4B_HANDLER Vector15C +#define TIVA_GPT5A_HANDLER Vector1B0 +#define TIVA_GPT5B_HANDLER Vector1B4 + +#define TIVA_GPT0A_NUMBER 19 +#define TIVA_GPT0B_NUMBER 20 +#define TIVA_GPT1A_NUMBER 21 +#define TIVA_GPT1B_NUMBER 22 +#define TIVA_GPT2A_NUMBER 23 +#define TIVA_GPT2B_NUMBER 24 +#define TIVA_GPT3A_NUMBER 35 +#define TIVA_GPT3B_NUMBER 36 +#define TIVA_GPT4A_NUMBER 70 +#define TIVA_GPT4B_NUMBER 71 +#define TIVA_GPT5A_NUMBER 92 +#define TIVA_GPT5B_NUMBER 93 + +#define TIVA_WGPT0A_HANDLER Vector1B8 +#define TIVA_WGPT0B_HANDLER Vector1BC +#define TIVA_WGPT1A_HANDLER Vector1C0 +#define TIVA_WGPT1B_HANDLER Vector1C4 +#define TIVA_WGPT2A_HANDLER Vector1C8 +#define TIVA_WGPT2B_HANDLER Vector1CC +#define TIVA_WGPT3A_HANDLER Vector1D0 +#define TIVA_WGPT3B_HANDLER Vector1D4 +#define TIVA_WGPT4A_HANDLER Vector1D8 +#define TIVA_WGPT4B_HANDLER Vector1DC +#define TIVA_WGPT5A_HANDLER Vector1E0 +#define TIVA_WGPT5B_HANDLER Vector1E4 + +#define TIVA_WGPT0A_NUMBER 94 +#define TIVA_WGPT0B_NUMBER 95 +#define TIVA_WGPT1A_NUMBER 96 +#define TIVA_WGPT1B_NUMBER 97 +#define TIVA_WGPT2A_NUMBER 98 +#define TIVA_WGPT2B_NUMBER 99 +#define TIVA_WGPT3A_NUMBER 100 +#define TIVA_WGPT3B_NUMBER 101 +#define TIVA_WGPT4A_NUMBER 102 +#define TIVA_WGPT4B_NUMBER 103 +#define TIVA_WGPT5A_NUMBER 104 +#define TIVA_WGPT5B_NUMBER 105 +#endif + +/* WDT units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_WDT_HANDLER Vector88 + +#define TIVA_WDT_NUMBER 18 +#endif + +/* ADC units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_ADC0_SEQ0_HANDLER Vector78 +#define TIVA_ADC0_SEQ1_HANDLER Vector7C +#define TIVA_ADC0_SEQ2_HANDLER Vector80 +#define TIVA_ADC0_SEQ3_HANDLER Vector84 +#define TIVA_ADC1_SEQ0_HANDLER Vector100 +#define TIVA_ADC1_SEQ1_HANDLER Vector104 +#define TIVA_ADC1_SEQ2_HANDLER Vector108 +#define TIVA_ADC1_SEQ3_HANDLER Vector10C + +#define TIVA_ADC0_SEQ0_NUMBER 14 +#define TIVA_ADC0_SEQ1_NUMBER 15 +#define TIVA_ADC0_SEQ2_NUMBER 16 +#define TIVA_ADC0_SEQ3_NUMBER 17 +#define TIVA_ADC1_SEQ0_NUMBER 48 +#define TIVA_ADC1_SEQ1_NUMBER 49 +#define TIVA_ADC1_SEQ2_NUMBER 50 +#define TIVA_ADC1_SEQ3_NUMBER 51 +#endif + +/* UART units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_UART0_HANDLER Vector54 +#define TIVA_UART1_HANDLER Vector58 +#define TIVA_UART2_HANDLER VectorC4 +#define TIVA_UART3_HANDLER Vector12C +#define TIVA_UART4_HANDLER Vector130 +#define TIVA_UART5_HANDLER Vector134 +#define TIVA_UART6_HANDLER Vector138 +#define TIVA_UART7_HANDLER Vector13C + +#define TIVA_UART0_NUMBER 5 +#define TIVA_UART1_NUMBER 6 +#define TIVA_UART2_NUMBER 33 +#define TIVA_UART3_NUMBER 59 +#define TIVA_UART4_NUMBER 60 +#define TIVA_UART5_NUMBER 61 +#define TIVA_UART6_NUMBER 62 +#define TIVA_UART7_NUMBER 63 +#endif + +/* SPI units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_SSI0_HANDLER Vector5C +#define TIVA_SSI1_HANDLER VectorC8 +#define TIVA_SSI2_HANDLER Vector124 +#define TIVA_SSI3_HANDLER Vector128 + +#define TIVA_SSI0_NUMBER 7 +#define TIVA_SSI1_NUMBER 34 +#define TIVA_SSI2_NUMBER 57 +#define TIVA_SSI3_NUMBER 58 +#endif + +/* I2C units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PZ) || defined(TM4C1232C3PM) \ + || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) || defined(TM4C1233H6PGE) \ + || defined(TM4C1233H6PZ) || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) \ + || defined(TM4C1236H6PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PZ) \ + || defined(TM4C1237H6PGE) || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) \ + || defined(TM4C123AH6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_I2C0_HANDLER Vector60 +#define TIVA_I2C1_HANDLER VectorD4 +#define TIVA_I2C2_HANDLER Vector150 +#define TIVA_I2C3_HANDLER Vector154 +#define TIVA_I2C4_HANDLER Vector1F4 +#define TIVA_I2C5_HANDLER Vector1F8 + +#define TIVA_I2C0_NUMBER 8 +#define TIVA_I2C1_NUMBER 37 +#define TIVA_I2C2_NUMBER 68 +#define TIVA_I2C3_NUMBER 69 +#define TIVA_I2C4_NUMBER 109 +#define TIVA_I2C5_NUMBER 110 +#endif +#if defined(TM4C1231C3PM) || defined(TM4C1231D5PM) || defined(TM4C1231E6PM) \ + || defined(TM4C1231H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233E6PM) || defined(TM4C1233H6PM) || defined(TM4C1237D5PM) \ + || defined(TM4C1237E6PM) || defined(TM4C1237H6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_I2C0_HANDLER Vector60 +#define TIVA_I2C1_HANDLER VectorD4 +#define TIVA_I2C2_HANDLER Vector150 +#define TIVA_I2C3_HANDLER Vector154 + +#define TIVA_I2C0_NUMBER 8 +#define TIVA_I2C1_NUMBER 37 +#define TIVA_I2C2_NUMBER 68 +#define TIVA_I2C3_NUMBER 69 +#endif + +/* CAN units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) +#define TIVA_CAN0_HANDLER VectorDC + +#define TIVA_CAN0_NUMBER 39 +#endif +#if defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) \ + || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_CAN0_HANDLER VectorDC +#define TIVA_CAN1_HANDLER VectorE0 + +#define TIVA_CAN0_NUMBER 39 +#define TIVA_CAN1_NUMBER 40 +#endif + +/* USB units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) +/* No interrupt handler and number.*/ +#endif +#if defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) \ + || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) \ + || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) \ + || defined(TM4C123GH5ZXR) +#define TIVA_USB0_HANDLER VectorF0 + +#define TIVA_USB0_NUMBER 44 +#endif + +/* AC units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231E6PM) || defined(TM4C1231H6PM) || defined(TM4C1232C3PM) \ + || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) \ + || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) || defined(TM4C1233E6PM) \ + || defined(TM4C1233H6PM) || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) \ + || defined(TM4C1236H6PM) || defined(TM4C1237D5PM) || defined(TM4C1237E6PM) \ + || defined(TM4C1237H6PM) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BH6PM) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_AC0_HANDLER VectorA4 +#define TIVA_AC1_HANDLER VectorA8 + +#define TIVA_AC0_NUMBER 25 +#define TIVA_AC1_NUMBER 26 +#endif +#if defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) || defined(TM4C1231H6PGE) \ + || defined(TM4C1231H6PZ) || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PZ) || defined(TM4C1237D5PZ) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PZ) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PZ) \ + || defined(TM4C123BH6ZRB) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE)\ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_AC0_HANDLER VectorA4 +#define TIVA_AC1_HANDLER VectorA8 +#define TIVA_AC2_HANDLER VectorAC + +#define TIVA_AC0_NUMBER 25 +#define TIVA_AC1_NUMBER 26 +#define TIVA_AC2_NUMBER 27 +#endif + +/* PWM units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) +/* No interrupt handler and number.*/ +#endif +#if defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) \ + || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_PWM0FAULT_HANDLER Vector64 +#define TIVA_PWM0GEN0_HANDLER Vector68 +#define TIVA_PWM0GEN1_HANDLER Vector6C +#define TIVA_PWM0GEN2_HANDLER Vector70 +#define TIVA_PWM0GEN3_HANDLER VectorF4 +#define TIVA_PWM1FAULT_HANDLER Vector268 +#define TIVA_PWM1GEN0_HANDLER Vector258 +#define TIVA_PWM1GEN1_HANDLER Vector25C +#define TIVA_PWM1GEN2_HANDLER Vector260 +#define TIVA_PWM1GEN3_HANDLER Vector264 + +#define TIVA_PWM0FAULT_NUMBER 9 +#define TIVA_PWM0GEN0_NUMBER 10 +#define TIVA_PWM0GEN1_NUMBER 11 +#define TIVA_PWM0GEN2_NUMBER 12 +#define TIVA_PWM0GEN3_NUMBER 45 +#define TIVA_PWM1FAULT_NUMBER 138 +#define TIVA_PWM1GEN0_NUMBER 134 +#define TIVA_PWM1GEN1_NUMBER 135 +#define TIVA_PWM1GEN2_NUMBER 136 +#define TIVA_PWM1GEN3_NUMBER 137 +#endif + +/* QEI units.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) +/* No interrupt handler and number.*/ +#endif +#if defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_QEI0_HANLDER Vector74 +#define TIVA_QEI1_HANLDER VectorD8 + +#define TIVA_QEI0_NUMBER 13 +#define TIVA_QEI1_NUMBER 38 +#endif + +/** + * @} + */ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#endif /* _TIVA_ISR_H_ */ + +/** + * @} + */ diff --git a/os/hal/ports/TIVA/TM4C123x/tiva_registry.h b/os/hal/ports/TIVA/TM4C123x/tiva_registry.h new file mode 100644 index 0000000..c626428 --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/tiva_registry.h @@ -0,0 +1,492 @@ +/* + Copyright (C) 2014 Marco Veeneman + + 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. +*/ + +/** + * @file TM4C123x/tiva_registry.h + * @brief TM4C123x capabilities registry. + * + * @addtogroup HAL + * @{ + */ + +#ifndef _TIVA_REGISTRY_H_ +#define _TIVA_REGISTRY_H_ + +/*===========================================================================*/ +/* Defined device check. */ +/*===========================================================================*/ + +#if !defined(TM4C1230C3PM) && !defined(TM4C1230D5PM) && \ + !defined(TM4C1230E6PM) && !defined(TM4C1230H6PM) && \ + !defined(TM4C1231C3PM) && !defined(TM4C1231D5PM) && \ + !defined(TM4C1231D5PZ) && !defined(TM4C1231E6PM) && \ + !defined(TM4C1231E6PZ) && !defined(TM4C1231H6PGE) && \ + !defined(TM4C1231H6PM) && !defined(TM4C1231H6PZ) && \ + !defined(TM4C1232C3PM) && !defined(TM4C1232D5PM) && \ + !defined(TM4C1232E6PM) && !defined(TM4C1232H6PM) && \ + !defined(TM4C1233C3PM) && !defined(TM4C1233D5PM) && \ + !defined(TM4C1233D5PZ) && !defined(TM4C1233E6PM) && \ + !defined(TM4C1233E6PZ) && !defined(TM4C1233H6PGE) && \ + !defined(TM4C1233H6PM) && !defined(TM4C1233H6PZ) && \ + !defined(TM4C1236D5PM) && !defined(TM4C1236E6PM) && \ + !defined(TM4C1236H6PM) && !defined(TM4C1237D5PM) && \ + !defined(TM4C1237D5PZ) && !defined(TM4C1237E6PM) && \ + !defined(TM4C1237E6PZ) && !defined(TM4C1237H6PGE) && \ + !defined(TM4C1237H6PM) && !defined(TM4C1237H6PZ) && \ + !defined(TM4C123AE6PM) && !defined(TM4C123AH6PM) && \ + !defined(TM4C123BE6PM) && !defined(TM4C123BE6PZ) && \ + !defined(TM4C123BH6PGE) && !defined(TM4C123BH6PM) && \ + !defined(TM4C123BH6PZ) && !defined(TM4C123BH6ZRB) && \ + !defined(TM4C123FE6PM) && !defined(TM4C123FH6PM) && \ + !defined(TM4C123GE6PM) && !defined(TM4C123GE6PZ) && \ + !defined(TM4C123GH6PGE) && !defined(TM4C123GH6PM) && \ + !defined(TM4C123GH6PZ) && !defined(TM4C123GH6ZRB) && \ + !defined(TM4C123GH5ZXR) +#error "No valid device defined." +#endif + +/*===========================================================================*/ +/* Platform capabilities. */ +/*===========================================================================*/ + +/** + * @name TM4C123x capabilities + * @{ + */ + +/* GPIO attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) \ + || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) || defined(TM4C1236D5PM) \ + || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) || defined(TM4C123AE6PM) \ + || defined(TM4C123AH6PM) || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) +#define TIVA_HAS_GPIOA TRUE +#define TIVA_HAS_GPIOB TRUE +#define TIVA_HAS_GPIOC TRUE +#define TIVA_HAS_GPIOD TRUE +#define TIVA_HAS_GPIOE TRUE +#define TIVA_HAS_GPIOF TRUE +#define TIVA_HAS_GPIOG TRUE +#define TIVA_HAS_GPIOH FALSE +#define TIVA_HAS_GPIOJ FALSE +#define TIVA_HAS_GPIOK FALSE +#define TIVA_HAS_GPIOL FALSE +#define TIVA_HAS_GPIOM FALSE +#define TIVA_HAS_GPION FALSE +#define TIVA_HAS_GPIOP FALSE +#define TIVA_HAS_GPIOQ FALSE +#define TIVA_HAS_GPIOR FALSE +#define TIVA_HAS_GPIOS FALSE +#define TIVA_HAS_GPIOT FALSE +#endif +#if defined(TM4C1231C3PM) || defined(TM4C1231D5PM) || defined(TM4C1231E6PM) \ + || defined(TM4C1231H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233E6PM) || defined(TM4C1233H6PM) || defined(TM4C1237D5PM) \ + || defined(TM4C1237E6PM) || defined(TM4C1237H6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_HAS_GPIOA TRUE +#define TIVA_HAS_GPIOB TRUE +#define TIVA_HAS_GPIOC TRUE +#define TIVA_HAS_GPIOD TRUE +#define TIVA_HAS_GPIOE TRUE +#define TIVA_HAS_GPIOF TRUE +#define TIVA_HAS_GPIOG FALSE +#define TIVA_HAS_GPIOH FALSE +#define TIVA_HAS_GPIOJ FALSE +#define TIVA_HAS_GPIOK FALSE +#define TIVA_HAS_GPIOL FALSE +#define TIVA_HAS_GPIOM FALSE +#define TIVA_HAS_GPION FALSE +#define TIVA_HAS_GPIOP FALSE +#define TIVA_HAS_GPIOQ FALSE +#define TIVA_HAS_GPIOR FALSE +#define TIVA_HAS_GPIOS FALSE +#define TIVA_HAS_GPIOT FALSE +#endif +#if defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) || defined(TM4C1231H6PZ) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) || defined(TM4C1233H6PZ) \ + || defined(TM4C1237D5PZ) || defined(TM4C1237E6PZ) || defined(TM4C1237H6PZ) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PZ) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PZ) +#define TIVA_HAS_GPIOA TRUE +#define TIVA_HAS_GPIOB TRUE +#define TIVA_HAS_GPIOC TRUE +#define TIVA_HAS_GPIOD TRUE +#define TIVA_HAS_GPIOE TRUE +#define TIVA_HAS_GPIOF TRUE +#define TIVA_HAS_GPIOG TRUE +#define TIVA_HAS_GPIOH TRUE +#define TIVA_HAS_GPIOJ TRUE +#define TIVA_HAS_GPIOK TRUE +#define TIVA_HAS_GPIOL TRUE +#define TIVA_HAS_GPIOM FALSE +#define TIVA_HAS_GPION FALSE +#define TIVA_HAS_GPIOP FALSE +#define TIVA_HAS_GPIOQ FALSE +#define TIVA_HAS_GPIOR FALSE +#define TIVA_HAS_GPIOS FALSE +#define TIVA_HAS_GPIOT FALSE +#endif +#if defined(TM4C1231H6PGE) || defined(TM4C1233H6PGE) || defined(TM4C1237H6PGE)\ + || defined(TM4C123BH6PGE) || defined(TM4C123GH6PGE) +#define TIVA_HAS_GPIOA TRUE +#define TIVA_HAS_GPIOB TRUE +#define TIVA_HAS_GPIOC TRUE +#define TIVA_HAS_GPIOD TRUE +#define TIVA_HAS_GPIOE TRUE +#define TIVA_HAS_GPIOF TRUE +#define TIVA_HAS_GPIOG TRUE +#define TIVA_HAS_GPIOH TRUE +#define TIVA_HAS_GPIOJ TRUE +#define TIVA_HAS_GPIOK TRUE +#define TIVA_HAS_GPIOL TRUE +#define TIVA_HAS_GPIOM TRUE +#define TIVA_HAS_GPION TRUE +#define TIVA_HAS_GPIOP TRUE +#define TIVA_HAS_GPIOQ FALSE +#define TIVA_HAS_GPIOR FALSE +#define TIVA_HAS_GPIOS FALSE +#define TIVA_HAS_GPIOT FALSE +#endif +#if defined(TM4C123BH6ZRB) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_GPIOA TRUE +#define TIVA_HAS_GPIOB TRUE +#define TIVA_HAS_GPIOC TRUE +#define TIVA_HAS_GPIOD TRUE +#define TIVA_HAS_GPIOE TRUE +#define TIVA_HAS_GPIOF TRUE +#define TIVA_HAS_GPIOG TRUE +#define TIVA_HAS_GPIOH TRUE +#define TIVA_HAS_GPIOJ TRUE +#define TIVA_HAS_GPIOK TRUE +#define TIVA_HAS_GPIOL TRUE +#define TIVA_HAS_GPIOM TRUE +#define TIVA_HAS_GPION TRUE +#define TIVA_HAS_GPIOP TRUE +#define TIVA_HAS_GPIOQ TRUE +#define TIVA_HAS_GPIOR FALSE +#define TIVA_HAS_GPIOS FALSE +#define TIVA_HAS_GPIOT FALSE +#endif + +/* GPTM attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_GPT0 TRUE +#define TIVA_HAS_GPT1 TRUE +#define TIVA_HAS_GPT2 TRUE +#define TIVA_HAS_GPT3 TRUE +#define TIVA_HAS_GPT4 TRUE +#define TIVA_HAS_GPT5 TRUE +#define TIVA_HAS_GPT6 FALSE +#define TIVA_HAS_GPT7 FALSE +#define TIVA_HAS_WGPT0 TRUE +#define TIVA_HAS_WGPT1 TRUE +#define TIVA_HAS_WGPT2 TRUE +#define TIVA_HAS_WGPT3 TRUE +#define TIVA_HAS_WGPT4 TRUE +#define TIVA_HAS_WGPT5 TRUE +#endif + +/* WDT attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_WDT0 TRUE +#define TIVA_HAS_WDT1 TRUE +#endif + +/* ADC attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_ADC0 TRUE +#define TIVA_HAS_ADC1 TRUE +#endif + +/* UART attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_UART0 TRUE +#define TIVA_HAS_UART1 TRUE +#define TIVA_HAS_UART2 TRUE +#define TIVA_HAS_UART3 TRUE +#define TIVA_HAS_UART4 TRUE +#define TIVA_HAS_UART5 TRUE +#define TIVA_HAS_UART6 TRUE +#define TIVA_HAS_UART7 TRUE +#endif + +/* SPI attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_SSI0 TRUE +#define TIVA_HAS_SSI1 TRUE +#define TIVA_HAS_SSI2 TRUE +#define TIVA_HAS_SSI3 TRUE +#endif + +/* I2C attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PZ) || defined(TM4C1232C3PM) \ + || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) || defined(TM4C1233H6PGE) \ + || defined(TM4C1233H6PZ) || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) \ + || defined(TM4C1236H6PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PZ) \ + || defined(TM4C1237H6PGE) || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) \ + || defined(TM4C123AH6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_I2C0 TRUE +#define TIVA_HAS_I2C1 TRUE +#define TIVA_HAS_I2C2 TRUE +#define TIVA_HAS_I2C3 TRUE +#define TIVA_HAS_I2C4 TRUE +#define TIVA_HAS_I2C5 TRUE +#define TIVA_HAS_I2C6 FALSE +#define TIVA_HAS_I2C7 FALSE +#define TIVA_HAS_I2C8 FALSE +#define TIVA_HAS_I2C9 FALSE +#endif +#if defined(TM4C1231C3PM) || defined(TM4C1231D5PM) || defined(TM4C1231E6PM) \ + || defined(TM4C1231H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233E6PM) || defined(TM4C1233H6PM) || defined(TM4C1237D5PM) \ + || defined(TM4C1237E6PM) || defined(TM4C1237H6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_HAS_I2C0 TRUE +#define TIVA_HAS_I2C1 TRUE +#define TIVA_HAS_I2C2 TRUE +#define TIVA_HAS_I2C3 TRUE +#define TIVA_HAS_I2C4 FALSE +#define TIVA_HAS_I2C5 FALSE +#define TIVA_HAS_I2C6 FALSE +#define TIVA_HAS_I2C7 FALSE +#define TIVA_HAS_I2C8 FALSE +#define TIVA_HAS_I2C9 FALSE +#endif + +/* CAN attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) +#define TIVA_HAS_CAN0 TRUE +#define TIVA_HAS_CAN1 FALSE +#endif +#if defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) \ + || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_CAN0 TRUE +#define TIVA_HAS_CAN1 TRUE +#endif + +/* USB attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) +#define TIVA_HAS_USB0 FALSE +#endif +#if defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) \ + || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) \ + || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) \ + || defined(TM4C123GH5ZXR) +#define TIVA_HAS_USB0 TRUE +#endif + +/* AC attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231E6PM) || defined(TM4C1231H6PM) || defined(TM4C1232C3PM) \ + || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) || defined(TM4C1232H6PM) \ + || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) || defined(TM4C1233E6PM) \ + || defined(TM4C1233H6PM) || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) \ + || defined(TM4C1236H6PM) || defined(TM4C1237D5PM) || defined(TM4C1237E6PM) \ + || defined(TM4C1237H6PM) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) \ + || defined(TM4C123BE6PM) || defined(TM4C123BH6PM) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GH6PM) +#define TIVA_HAS_AC0 TRUE +#define TIVA_HAS_AC1 TRUE +#define TIVA_HAS_AC2 FALSE +#endif +#if defined(TM4C1231D5PZ) || defined(TM4C1231E6PZ) || defined(TM4C1231H6PGE) \ + || defined(TM4C1231H6PZ) || defined(TM4C1233D5PZ) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PZ) || defined(TM4C1237D5PZ) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PZ) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PZ) \ + || defined(TM4C123BH6ZRB) || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE)\ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_AC0 TRUE +#define TIVA_HAS_AC1 TRUE +#define TIVA_HAS_AC2 TRUE +#endif + +/* PWM attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) +#define TIVA_HAS_PWM0 FALSE +#define TIVA_HAS_PWM1 FALSE +#endif +#if defined(TM4C123AE6PM) || defined(TM4C123AH6PM) || defined(TM4C123BE6PM) \ + || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) || defined(TM4C123BH6PM) \ + || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) || defined(TM4C123FE6PM) \ + || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) || defined(TM4C123GE6PZ) \ + || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) || defined(TM4C123GH6PZ) \ + || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_PWM0 TRUE +#define TIVA_HAS_PWM1 TRUE +#endif + +/* QEI attributes.*/ +#if defined(TM4C1230C3PM) || defined(TM4C1230D5PM) || defined(TM4C1230E6PM) \ + || defined(TM4C1230H6PM) || defined(TM4C1231C3PM) || defined(TM4C1231D5PM) \ + || defined(TM4C1231D5PZ) || defined(TM4C1231E6PM) || defined(TM4C1231E6PZ) \ + || defined(TM4C1231H6PGE) || defined(TM4C1231H6PM) || defined(TM4C1231H6PZ) \ + || defined(TM4C1232C3PM) || defined(TM4C1232D5PM) || defined(TM4C1232E6PM) \ + || defined(TM4C1232H6PM) || defined(TM4C1233C3PM) || defined(TM4C1233D5PM) \ + || defined(TM4C1233D5PZ) || defined(TM4C1233E6PM) || defined(TM4C1233E6PZ) \ + || defined(TM4C1233H6PGE) || defined(TM4C1233H6PM) || defined(TM4C1233H6PZ) \ + || defined(TM4C1236D5PM) || defined(TM4C1236E6PM) || defined(TM4C1236H6PM) \ + || defined(TM4C1237D5PM) || defined(TM4C1237D5PZ) || defined(TM4C1237E6PM) \ + || defined(TM4C1237E6PZ) || defined(TM4C1237H6PGE) || defined(TM4C1237H6PM) \ + || defined(TM4C1237H6PZ) || defined(TM4C123AE6PM) || defined(TM4C123AH6PM) +#define TIVA_HAS_QEI0 FALSE +#define TIVA_HAS_QEI1 FALSE +#endif +#if defined(TM4C123BE6PM) || defined(TM4C123BE6PZ) || defined(TM4C123BH6PGE) \ + || defined(TM4C123BH6PM) || defined(TM4C123BH6PZ) || defined(TM4C123BH6ZRB) \ + || defined(TM4C123FE6PM) || defined(TM4C123FH6PM) || defined(TM4C123GE6PM) \ + || defined(TM4C123GE6PZ) || defined(TM4C123GH6PGE) || defined(TM4C123GH6PM) \ + || defined(TM4C123GH6PZ) || defined(TM4C123GH6ZRB) || defined(TM4C123GH5ZXR) +#define TIVA_HAS_QEI0 TRUE +#define TIVA_HAS_QEI1 TRUE +#endif + +/** + * @} + */ + +#endif /* _TIVA_REGISTRY_H_ */ + +/** + * @} + */ diff --git a/os/hal/ports/TIVA/TM4C123x/tm4c123x.h b/os/hal/ports/TIVA/TM4C123x/tm4c123x.h new file mode 100644 index 0000000..f7bb8f5 --- /dev/null +++ b/os/hal/ports/TIVA/TM4C123x/tm4c123x.h @@ -0,0 +1,962 @@ +/* + Copyright (C) 2014 Marco Veeneman + + 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. +*/ + +/** + * @addtogroup CMSIS + * @{ + */ + +/** + * @addtogroup TM4C123x + * @{ + */ + +#ifndef __TM4C123x_H +#define __TM4C123x_H + +/** + * @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001 /**< Cortex-M4 Core Revision */ +#define __MPU_PRESENT 1 /**< MPU present */ +#define __NVIC_PRIO_BITS 3 /**< Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /**< Use different SysTick Config */ +#define __FPU_PRESENT 1 /**< FPU present */ + +/** + * @brief TM4C123x Interrupt Number Definitions + */ +typedef enum IRQn +{ + /***** Cortex-M4 Processor Exceptions Numbers ******************************/ + NonMaskableInt_IRQn = -14, /**< Cortex-M4 Non-Maskable Interrupt */ + HardFault_IRQn = -13, /**< Cortex-M4 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 = -3, /**< Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /**< Cortex-M4 System Tick Interrupt */ + /***** TM4C123x Specific Interrupt Numbers *********************************/ + GPIOA_IRQn = 0, /**< GPIO Port A */ + GPIOB_IRQn = 1, /**< GPIO Port B */ + GPIOC_IRQn = 2, /**< GPIO Port C */ + GPIOD_IRQn = 3, /**< GPIO Port D */ + GPIOE_IRQn = 4, /**< GPIO Port E */ + UART0_IRQn = 5, /**< UART0 */ + UART1_IRQn = 6, /**< UART1 */ + SSI0_IRQn = 7, /**< SSI0 */ + I2C0_IRQn = 8, /**< I2C0 */ + PWM0FAULT_IRQn = 9, /**< PWM0 Fault */ + PWM0GEN0_IRQn = 10, /**< PWM0 Generator 0 */ + PWM0GEN1_IRQn = 11, /**< PWM0 Generator 1 */ + PWM0GEN2_IRQn = 12, /**< PWM0 Generator 2 */ + QEI0_IRQn = 13, /**< QEI0 */ + ADC0SEQ0_IRQn = 14, /**< ADC0 Sequence 0 */ + ADC0SEQ1_IRQn = 15, /**< ADC0 Sequence 1 */ + ADC0SEQ2_IRQn = 16, /**< ADC0 Sequence 2 */ + ADC0SEQ3_IRQn = 17, /**< ADC0 Sequence 3 */ + WATCHDOG_IRQn = 18, /**< Watchdog Timers 0 and 1 */ + TIMER0A_IRQn = 19, /**< 16/32-Bit Timer 0A */ + TIMER0B_IRQn = 20, /**< 16/32-Bit Timer 0B */ + TIMER1A_IRQn = 21, /**< 16/32-Bit Timer 1A */ + TIMER1B_IRQn = 22, /**< 16/32-Bit Timer 1B */ + TIMER2A_IRQn = 23, /**< 16/32-Bit Timer 2A */ + TIMER2B_IRQn = 24, /**< 16/32-Bit Timer 2B */ + ACOMP0_IRQn = 25, /**< Analog Comparator 0 */ + ACOMP1_IRQn = 26, /**< Analog Comparator 1 */ + SYSCON_IRQn = 28, /**< System Control */ + FMCEECON_IRQn = 29, /**< Flash Memory Control and EEPROM Control */ + GPIOF_IRQn = 30, /**< GPIO Port F */ + UART2_IRQn = 33, /**< UART2 */ + SSI1_IRQn = 34, /**< SSI1 */ + TIMER3A_IRQn = 35, /**< 16/32-Bit Timer 3A */ + TIMER3B_IRQn = 36, /**< 16/32-Bit Timer 3B */ + I2C1_IRQn = 37, /**< I2C1 */ + QEI1_IRQn = 38, /**< QEI1 */ + CAN0_IRQn = 39, /**< CAN0 */ + CAN1_IRQn = 40, /**< CAN1 */ + HIBMODULE_IRQn = 43, /**< Hibernation Module */ + USB_IRQn = 44, /**< USB */ + PWM0GEN3_IRQn = 45, /**< PWM0 Generator 3 */ + UDMASFW_IRQn = 46, /**< UDMA Software */ + UDMAERR_IRQn = 47, /**< UDMA Error */ + ADC1SEQ0_IRQn = 48, /**< ADC1 Sequence 0 */ + ADC1SEQ1_IRQn = 49, /**< ADC1 Sequence 1 */ + ADC1SEQ2_IRQn = 50, /**< ADC1 Sequence 2 */ + ADC1SEQ3_IRQn = 51, /**< ADC1 Sequence 3 */ + SSI2_IRQn = 57, /**< SSI2 */ + SSI3_IRQn = 58, /**< SSI3 */ + UART3_IRQn = 59, /**< UART3 */ + UART4_IRQn = 60, /**< UART4 */ + UART5_IRQn = 61, /**< UART5 */ + UART6_IRQn = 62, /**< UART6 */ + UART7_IRQn = 63, /**< UART7 */ + I2C2_IRQn = 68, /**< I2C2 */ + I2C3_IRQn = 69, /**< I2C3 */ + TIMER4A_IRQn = 70, /**< 16/32-Bit Timer 4A */ + TIMER4B_IRQn = 71, /**< 16/32-Bit Timer 4B */ + TIMER5A_IRQn = 92, /**< 16/32-Bit Timer 5A */ + TIMER5B_IRQn = 93, /**< 16/32-Bit Timer 5B */ + WTIMER0A_IRQn = 94, /**< 32/64-Bit Timer 0A */ + WTIMER0B_IRQn = 95, /**< 32/64-Bit Timer 0B */ + WTIMER1A_IRQn = 96, /**< 32/64-Bit Timer 1A */ + WTIMER1B_IRQn = 97, /**< 32/64-Bit Timer 1B */ + WTIMER2A_IRQn = 98, /**< 32/64-Bit Timer 2A */ + WTIMER2B_IRQn = 99, /**< 32/64-Bit Timer 2B */ + WTIMER3A_IRQn = 100, /**< 32/64-Bit Timer 3A */ + WTIMER3B_IRQn = 101, /**< 32/64-Bit Timer 3B */ + WTIMER4A_IRQn = 102, /**< 32/64-Bit Timer 4A */ + WTIMER4B_IRQn = 103, /**< 32/64-Bit Timer 4B */ + WTIMER5A_IRQn = 104, /**< 32/64-Bit Timer 5A */ + WTIMER5B_IRQn = 105, /**< 32/64-Bit Timer 5B */ + SYSEXCEPT_IRQn = 106, /**< System Exception (imprecise) */ + PWM1GEN0_IRQn = 134, /**< PWM1 Generator 0 */ + PWM1GEN1_IRQn = 135, /**< PWM1 Generator 1 */ + PWM1GEN2_IRQn = 136, /**< PWM1 Generator 2 */ + PWM1GEN3_IRQn = 137, /**< PWM1 Generator 3 */ + PWM1FAULT_IRQn = 138 /**< PWM1 Fault */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals.*/ +#include <stdint.h> + +/** + * @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog Comparator + */ +typedef struct +{ + __IO uint32_t MIS; /**< Masked Interrupt Status */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t INTEN; /**< Interrupt Enable */ + __I uint32_t RESERVED0[1]; /**< Reserved */ + __IO uint32_t REFCTL; /**< Reference Voltage Control */ + __I uint32_t RESERVED1[3]; /**< Reserved */ + __I uint32_t STAT0; /**< Status 0 */ + __IO uint32_t CTL0; /**< Control 0 */ + __I uint32_t RESERVED2[6]; /**< Reserved */ + __I uint32_t STAT1; /**< Status 1 */ + __IO uint32_t CTL1; /**< Control 1 */ + __I uint32_t RESERVED3[990]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ +} AC_TypeDef; + +/** + * @brief Analog-to-Digital Converter + */ +typedef struct +{ + __IO uint32_t ACTSS; /**< Active Sample Sequencer */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t IM; /**< Interrupt Mask */ + __IO uint32_t ISC; /**< Interrupt Status and Clear */ + __IO uint32_t OSTAT; /**< Overflow Status */ + __IO uint32_t EMUX; /**< Event Multiplexer Select */ + __IO uint32_t USTAT; /**< Underflow Status */ + __IO uint32_t TSSEL; /**< Trigger Source Select */ + __IO uint32_t SSPRI; /**< Sample Sequencer Priority */ + __IO uint32_t SPC; /**< Sample Phase Control */ + __IO uint32_t PSSI; /**< Processor Sample Sequence Initiate */ + __I uint32_t RESERVED1[1]; /**< Reserved */ + __IO uint32_t SAC; /**< Sample Averaging Control */ + __IO uint32_t DCISC; /**< Digital Comparator Interrupt Status and + Clear */ + __IO uint32_t CTL; /**< Control */ + __I uint32_t RESERVED2[1]; /**< Reserved */ + __IO uint32_t SSMUX0; /**< Sample Sequence Input Multiplexer Select + 0 */ + __IO uint32_t SSCTL0; /**< Sample Sequence Control 0 */ + __I uint32_t SSFIFO0; /**< Sample Sequence Result FIFO 0 */ + __I uint32_t SSFSTAT0; /**< Sample Sequence FIFO 0 Status */ + __IO uint32_t SSOP0; /**< Sample Sequence 0 Operation */ + __IO uint32_t SSDC0; /**< Sample Sequence 0 Digital Comparator + Select */ + __I uint32_t RESERVED3[2]; /**< Reserved */ + __IO uint32_t SSMUX1; /**< Sample Sequence Input Multiplexer Select + 1 */ + __IO uint32_t SSCTL1; /**< Sample Sequence Control 1 */ + __I uint32_t SSFIFO1; /**< Sample Sequence Result FIFO 1 */ + __I uint32_t SSFSTAT1; /**< Sample Sequence FIFO 1 Status */ + __IO uint32_t SSOP1; /**< Sample Sequence 1 Operation */ + __IO uint32_t SSDC1; /**< Sample Sequence 1 Digital Comparator + Select */ + __I uint32_t RESERVED4[2]; /**< Reserved */ + __IO uint32_t SSMUX2; /**< Sample Sequence Input Multiplexer Select + 2 */ + __IO uint32_t SSCTL2; /**< Sample Sequence Control 2 */ + __I uint32_t SSFIFO2; /**< Sample Sequence Result FIFO 2 */ + __I uint32_t SSFSTAT2; /**< Sample Sequence FIFO 2 Status */ + __IO uint32_t SSOP2; /**< Sample Sequence 2 Operation */ + __IO uint32_t SSDC2; /**< Sample Sequence 2 Digital Comparator + Select */ + __I uint32_t RESERVED5[2]; /**< Reserved */ + __IO uint32_t SSMUX3; /**< Sample Sequence Input Multiplexer Select + 3 */ + __IO uint32_t SSCTL3; /**< Sample Sequence Control 3 */ + __I uint32_t SSFIFO3; /**< Sample Sequence Result FIFO 3 */ + __I uint32_t SSFSTAT3; /**< Sample Sequence FIFO 3 Status */ + __IO uint32_t SSOP3; /**< Sample Sequence 3 Operation */ + __IO uint32_t SSDC3; /**< Sample Sequence 3 Digital Comparator + Select */ + __I uint32_t RESERVED6[786]; /**< Reserved */ + __O uint32_t DCRIC; /**< Digital Comparator Reset Initial + Conditions */ + __I uint32_t RESERVED7[63]; /**< Reserved */ + __IO uint32_t DCCTL0; /**< Digital Comparator Control 0 */ + __IO uint32_t DCCTL1; /**< Digital Comparator Control 1 */ + __IO uint32_t DCCTL2; /**< Digital Comparator Control 2 */ + __IO uint32_t DCCTL3; /**< Digital Comparator Control 3 */ + __IO uint32_t DCCTL4; /**< Digital Comparator Control 4 */ + __IO uint32_t DCCTL5; /**< Digital Comparator Control 5 */ + __IO uint32_t DCCTL6; /**< Digital Comparator Control 6 */ + __IO uint32_t DCCTL7; /**< Digital Comparator Control 7 */ + __I uint32_t RESERVED8[8]; /**< Reserved */ + __IO uint32_t DCCMP0; /**< Digital Comparator Range 0 */ + __IO uint32_t DCCMP1; /**< Digital Comparator Range 1 */ + __IO uint32_t DCCMP2; /**< Digital Comparator Range 2 */ + __IO uint32_t DCCMP3; /**< Digital Comparator Range 3 */ + __IO uint32_t DCCMP4; /**< Digital Comparator Range 4 */ + __IO uint32_t DCCMP5; /**< Digital Comparator Range 5 */ + __IO uint32_t DCCMP6; /**< Digital Comparator Range 6 */ + __IO uint32_t DCCMP7; /**< Digital Comparator Range 7 */ + __I uint32_t RESERVED9[88]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ + __IO uint32_t PC; /**< Peripheral Configuration */ + __IO uint32_t CC; /**< Clock Configuration */ +} ADC_TypeDef; + +/** + * @brief Controller Area Network + */ +typedef struct +{ + __IO uint32_t CTL; /**< Control */ + __IO uint32_t STS; /**< Status */ + __I uint32_t ERR; /**< Error Counter */ + __IO uint32_t BIT; /**< Bit Timing */ + __I uint32_t INT; /**< Interrupt */ + __IO uint32_t TST; /**< Test */ + __IO uint32_t BRPE; /**< Baud Rate Prescaler Extension */ + __I uint32_t RESERVED0[1]; /**< Reserved */ + __IO uint32_t IF1CRQ; /**< IF1 Command Request */ + __IO uint32_t IF1CMSK; /**< IF1 Command Mask */ + __IO uint32_t IF1MSK1; /**< IF1 Mask 1 */ + __IO uint32_t IF1MSK2; /**< IF1 Mask 2 */ + __IO uint32_t IF1ARB1; /**< IF1 Arbitration 1 */ + __IO uint32_t IF1ARB2; /**< IF1 Arbitration 2 */ + __IO uint32_t IF1MCTL; /**< IF1 Message Control */ + __IO uint32_t IF1DA1; /**< IF1 Data A1 */ + __IO uint32_t IF1DA2; /**< IF1 Data A2 */ + __IO uint32_t IF1DB1; /**< IF1 Data B1 */ + __IO uint32_t IF1DB2; /**< IF1 Data B2 */ + __I uint32_t RESERVED1[13]; /**< Reserved */ + __IO uint32_t IF2CRQ; /**< IF2 Command Request */ + __IO uint32_t IF2CMSK; /**< IF2 Command Mask */ + __IO uint32_t IF2MSK1; /**< IF2 Mask 1 */ + __IO uint32_t IF2MSK2; /**< IF2 Mask 2 */ + __IO uint32_t IF2ARB1; /**< IF2 Arbitration 1 */ + __IO uint32_t IF2ARB2; /**< IF2 Arbitration 2 */ + __IO uint32_t IF2MCTL; /**< IF2 Message Control */ + __IO uint32_t IF2DA1; /**< IF2 Data A1 */ + __IO uint32_t IF2DA2; /**< IF2 Data A2 */ + __IO uint32_t IF2DB1; /**< IF2 Data B1 */ + __IO uint32_t IF2DB2; /**< IF2 Data B2 */ + __I uint32_t RESERVED2[21]; /**< Reserved */ + __I uint32_t TXRQ1; /**< Transmission Request 1 */ + __I uint32_t TXRQ2; /**< Transmission Request 2 */ + __I uint32_t RESERVED3[6]; /**< Reserved */ + __I uint32_t NWDA1; /**< New Data 1 */ + __I uint32_t NWDA2; /**< New Data 2 */ + __I uint32_t RESERVED4[6]; /**< Reserved */ + __I uint32_t MSG1INT; /**< Message 1 Interrupt Pending */ + __I uint32_t MSG2INT; /**< Message 2 Interrupt Pending */ + __I uint32_t RESERVED5[6]; /**< Reserved */ + __I uint32_t MSG1VAL; /**< Message 1 Valid */ + __I uint32_t MSG2VAL; /**< Message 2 Valid */ +} CAN_TypeDef; + +/** + * @brief EEPROM Memory + */ +typedef struct +{ + __IO uint32_t EESIZE; /**< Size Information */ + __IO uint32_t EEBLOCK; /**< Current Block */ + __IO uint32_t EEOFFSET; /**< Current Offset */ + __I uint32_t RESERVED0[1]; /**< Reserved */ + __IO uint32_t EERDWR; /**< Read-Write */ + __IO uint32_t EERDWRINC; /**< Read-Write with Increment */ + __IO uint32_t EEDONE; /**< Done Status */ + __IO uint32_t EESUPP; /**< Support Control and Status */ + __IO uint32_t EEUNLOCK; /**< Unlock */ + __I uint32_t RESERVED1[3]; /**< Reserved */ + __IO uint32_t EEPROT; /**< Protection */ + __IO uint32_t EEPASS0; /**< Password */ + __IO uint32_t EEPASS1; /**< Password */ + __IO uint32_t EEPASS2; /**< Password */ + __IO uint32_t EEINT; /**< Interrupt */ + __I uint32_t RESERVED2[3]; /**< Reserved */ + __IO uint32_t EEHIDE; /**< Block Hide */ + __I uint32_t RESERVED3[11]; /**< Reserved */ + __IO uint32_t EEDBGME; /**< Debug Mass Erase */ + __I uint32_t RESERVED4[975]; /**< Reserved */ + __IO uint32_t EEPROMPP; /**< Peripheral Properties */ +} EEPROM_TypeDef; + +/** + * @brief Flash Memory + */ +typedef struct +{ + __IO uint32_t FMA; /**< Flash Memory Address */ + __IO uint32_t FMD; /**< Flash Memory Data */ + __IO uint32_t FMC; /**< Flash Memory Control */ + __I uint32_t FCRIS; /**< Flash Controller Raw Interrupt Status */ + __IO uint32_t FCIM; /**< Flash Controller Interrupt Mask */ + __IO uint32_t FCMISC; /**< Masked Interrupt Status and Clear */ + __I uint32_t RESERVED0[2]; /**< Reserved */ + __IO uint32_t FMC2; /**< Flash Memory Control 2 */ + __I uint32_t RESERVED1[3]; /**< Reserved */ + __IO uint32_t FWBVAL; /**< Flash Write Buffer Valid */ + __I uint32_t RESERVED2[51]; /**< Reserved */ + __IO uint32_t FWBN; /**< Flash Write Buffer n */ + __I uint32_t RESERVED3[943]; /**< Reserved */ + __I uint32_t FSIZE; /**< Flash Size */ + __I uint32_t SSIZE; /**< SRAM Size */ + __I uint32_t RESERVED4[1]; /**< Reserved */ + __IO uint32_t ROMSWMAP; /**< ROM Software Map */ +} FLASH_TypeDef; + +/** + * @brief General Purpose Input/Outputs + */ +typedef struct +{ + union { + __IO uint32_t MASKED_ACCESS[256]; /**< Masked access of Data Register */ + struct { + __I uint32_t RESERVED0[255]; /**< Reserved */ + __IO uint32_t DATA; /**< Data */ + }; + }; + __IO uint32_t DIR; /**< Direction */ + __IO uint32_t IS; /**< Interrupt Sense */ + __IO uint32_t IBE; /**< Interrupt Both Edges */ + __IO uint32_t IEV; /**< Interrupt Event */ + __IO uint32_t IM; /**< Interrupt Mask */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __O uint32_t ICR; /**< Interrupt Clear */ + __IO uint32_t AFSEL; /**< Alternate Function Select */ + __I uint32_t RESERVED1[55]; /**< Reserved */ + __IO uint32_t DR2R; /**< 2-mA Drive Select */ + __IO uint32_t DR4R; /**< 4-mA Drive Select */ + __IO uint32_t DR8R; /**< 8-mA Drive Select */ + __IO uint32_t ODR; /**< Open Drain Select */ + __IO uint32_t PUR; /**< Pull-Up Select */ + __IO uint32_t PDR; /**< Pull-Down Select */ + __IO uint32_t SLR; /**< Slew Rate Control Select */ + __IO uint32_t DEN; /**< Digital Enable */ + __IO uint32_t LOCK; /**< Lock */ + __IO uint32_t CR; /**< Commit */ + __IO uint32_t AMSEL; /**< Analog Mode Select */ + __IO uint32_t PCTL; /**< Port Control */ + __IO uint32_t ADCCTL; /**< ADC Control */ + __IO uint32_t DMACTL; /**< DMA Control */ +} GPIO_TypeDef; + +/** + * @brief General Purpose Timer + */ +typedef struct +{ + __IO uint32_t CFG; /**< Configuration */ + __IO uint32_t TAMR; /**< Timer A Mode */ + __IO uint32_t TBMR; /**< Timer B Mode */ + __IO uint32_t CTL; /**< Control */ + __IO uint32_t SYNC; /**< Synchronize */ + __I uint32_t RESERVED0[1]; /**< Reserved */ + __IO uint32_t IMR; /**< Interrupt Mask */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __O uint32_t ICR; /**< Interrupt Clear */ + __IO uint32_t TAILR; /**< Timer A Interval Load */ + __IO uint32_t TBILR; /**< Timer B Interval Load */ + __IO uint32_t TAMATCHR; /**< Timer A Match */ + __IO uint32_t TBMATCHR; /**< Timer B Match */ + __IO uint32_t TAPR; /**< Timer A Prescale */ + __IO uint32_t TBPR; /**< Timer B Prescale */ + __IO uint32_t TAPMR; /**< Timer A Prescale Match */ + __IO uint32_t TBPMR; /**< Timer B Prescale Match */ + __I uint32_t TAR; /**< Timer A */ + __I uint32_t TBR; /**< Timer B */ + __IO uint32_t TAV; /**< Timer A Value */ + __IO uint32_t TBV; /**< Timer B Value */ + __I uint32_t RTCPD; /**< RTC Predivide */ + __I uint32_t TAPS; /**< Timer A Prescale Snapshot */ + __I uint32_t TBPS; /**< Timer B Prescale Snapshot */ + __I uint32_t TAPV; /**< Timer A Prescale Value */ + __I uint32_t TBPV; /**< Timer B Prescale Value */ + __I uint32_t RESERVED1[981]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ +} GPT_TypeDef; + +/** + * @brief Hibernation Module + */ +typedef struct +{ + __I uint32_t RTCC; /**< RTC Counter */ + __IO uint32_t RTCM0; /**< RTC Match 0 */ + __I uint32_t RESERVED0[1]; /**< Reserved */ + __IO uint32_t RTCLD; /**< RTC Load */ + __IO uint32_t CTL; /**< Control */ + __IO uint32_t IM; /**< Interrupt Mask */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __IO uint32_t IC; /**< Interrupt Clear */ + __IO uint32_t RTCT; /**< RTC Trim */ + __IO uint32_t RTCSS; /**< RTC Sub Seconds */ + __I uint32_t RESERVED1[1]; /**< Reserved */ + __IO uint32_t DATA; /**< Data */ +} HIB_TypeDef; + +/** + * @brief Inter-Integrated Circuit + */ +typedef struct +{ + __IO uint32_t MSA; /**< Master Slave Address */ + __IO uint32_t MCS; /**< Master Control/Status */ + __IO uint32_t MDR; /**< Master Data */ + __IO uint32_t MTPR; /**< Master Timer Period */ + __IO uint32_t MIMR; /**< Master Interrupt Mask */ + __I uint32_t MRIS; /**< Master Raw Interrupt Status */ + __IO uint32_t MMIS; /**< Master Masked Interrupt Status */ + __O uint32_t MICR; /**< Master Interrupt Clear */ + __IO uint32_t MCR; /**< Master Configuration */ + __IO uint32_t MCLKOCNT; /**< Master Clock Low Timeout Count */ + __I uint32_t RESERVED0; /**< Reserved */ + __I uint32_t MBMON; /**< Master Bus Monitor */ + __IO uint32_t MCR2; /**< Master Configuration 2 */ + __I uint32_t RESERVED1[497]; /**< Reserved */ + __IO uint32_t SOAR; /**< Slave Own Address */ + __IO uint32_t SCSR; /**< Slave Control/Status */ + __IO uint32_t SDR; /**< Slave Data */ + __IO uint32_t SIMR; /**< Slave Interrupt Mask */ + __I uint32_t SRIS; /**< Slave Raw Interrupt Status */ + __I uint32_t SMIS; /**< Slave Masked Interrupt Status */ + __O uint32_t SICR; /**< Slave Interrupt Clear */ + __IO uint32_t SOAR2; /**< Slave Own Address 2 */ + __IO uint32_t SACKCTL; /**< Slave ACK Control */ + __I uint32_t RESERVED2[487]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ + __I uint32_t PC; /**< Peripheral Configuration */ +} I2C_TypeDef; + +typedef struct +{ + __IO uint32_t CTL; /**< Control */ + __IO uint32_t INTEN; /**< Interrupt and Trigger Enable */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t ISC; /**< Interrupt Status and Clear */ + __IO uint32_t LOAD; /**< Load */ + __I uint32_t COUNT; /**< Counter */ + __IO uint32_t CMP[2]; /**< Compare A, B */ + __IO uint32_t GEN[2]; /**< Generator A, B Control */ + __IO uint32_t DBCTL; /**< Dead-Band Control */ + __IO uint32_t DBRISE; /**< Dead-Band Rising-Edge Delay */ + __IO uint32_t DBFALL; /**< Dead-Band Falling-Edge Delay */ + __IO uint32_t FLTSRC[2]; /**< Fault Source 0, 1 */ + __IO uint32_t MINFLTPER; /**< Minimum Fault Period */ +} PWM_GENERATOR_T; + +/* + * @brief Pulse Width Modulator + */ +typedef struct +{ + __IO uint32_t CTL; /**< Master Control */ + __IO uint32_t SYNC; /**< Time Base Sync */ + __IO uint32_t ENABLE; /**< Output Enable */ + __IO uint32_t INVERT; /**< Output Inversion */ + __IO uint32_t FAULT; /**< Output Fault */ + __IO uint32_t INTEN; /**< Interrupt Enable */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t ISC; /**< Interrupt Status and Clear */ + __I uint32_t STATUS; /**< Status */ + __IO uint32_t FAULTVAL; /**< Fault Condition Value */ + __IO uint32_t ENUPD; /**< Enable Update */ + __I uint32_t RESERVED0[5]; /**< Reserved */ + __IO PWM_GENERATOR_T PWM[4]; /**< PWM Generator 0, 1, 2 and 3 */ + __I uint32_t RESERVED1[432]; /**< Reserved */ + __IO uint32_t _0FLTSEN; /**< Fault Pin Logic Sense */ + __IO uint32_t _0FLTSTAT[2]; /**< Fault Status 0, 1 */ + __I uint32_t RESERVED2[29]; /**< Reserved */ + __IO uint32_t _1FLTSEN; /**< Fault Pin Logic Sense */ + __IO uint32_t _1FLSTSAT[2]; /**< Fault Status 0, 1 */ + __I uint32_t RESERVED3[30]; /**< Reserved */ + __IO uint32_t _2FLTSTAT[2]; /**< Fault Status 0, 1 */ + __I uint32_t RESERVED4[30]; /**< Reserved */ + __IO uint32_t _3FLTSTAT[2]; /**< Fault Status 0, 1 */ + __I uint32_t RESERVED5[397]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ +} PWM_TypeDef; + +/** + * @brief Quadrature Encoder Interface + */ +typedef struct +{ + __IO uint32_t CTL; /**< Control */ + __I uint32_t STAT; /**< Status */ + __IO uint32_t POS; /**< Position */ + __IO uint32_t MAXPOS; /**< Maximum Position */ + __IO uint32_t LOAD; /**< Timer Load */ + __I uint32_t TIME; /**< Timer */ + __I uint32_t COUNT; /**< Velocity Counter */ + __I uint32_t SPEED; /**< Velocity */ + __IO uint32_t INTEN; /**< Interrupt Enable */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t ISC; /**< Interrupt Status and Clear */ +} QEI_TypeDef; + +/** + * @brief Synchronous Serial Interface + */ +typedef struct +{ + __IO uint32_t CR0; /**< Control 0 */ + __IO uint32_t CR1; /**< Control 1 */ + __IO uint32_t DR; /**< Data */ + __I uint32_t SR; /**< Status */ + __IO uint32_t CPSR; /**< Clock Prescale */ + __IO uint32_t IM; /**< Interrupt Mask */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __O uint32_t ICR; /**< Interrupt Clear */ + __IO uint32_t DMACTL; /**< DMA Control */ + __I uint32_t RESERVED1[1000];/**< Reserved */ + __IO uint32_t CC; /**< Clock Configuration */ +} SSI_TypeDef; + +/** + * @brief System Control + */ +typedef struct +{ + __I uint32_t DID0; /**< Device Identification 0 */ + __I uint32_t DID1; /**< Device Identification 1 */ + __I uint32_t RESERVED0[10]; /**< Reserved */ + __IO uint32_t PBORCTL; /**< Brown-Out Reset Control */ + __I uint32_t RESERVED1[7]; /**< Reserved */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __IO uint32_t IMC; /**< Interrupt Mask Control */ + __IO uint32_t MISC; /**< Interrupt Status and Clear */ + __IO uint32_t RESC; /**< Reset Cause */ + __IO uint32_t RCC; /**< Run-Mode Clock Configuration */ + __I uint32_t RESERVED2[2]; /**< Reserved */ + __IO uint32_t GPIOHBCTL; /**< GPIO High-Performance Bus Control */ + __IO uint32_t RCC2; /**< Run-Mode Clock Configuration 2 */ + __I uint32_t RESERVED3[2]; /**< Reserved */ + __IO uint32_t MOSCCTL; /**< Main Oscillator Control */ + __I uint32_t RESERVED4[49]; /**< Reserved */ + __IO uint32_t DSLPCLKCFG; /**< Deep Sleep Clock Configuration */ + __I uint32_t RESERVED5[1]; /**< Reserved */ + __I uint32_t SYSPROP; /**< System Properties */ + __IO uint32_t PIOSCCAL; /**< PIOSC Calibration */ + __I uint32_t PIOSCSTAT; /**< PIOSC Statistics */ + __I uint32_t RESERVED6[2]; /**< Reserved */ + __I uint32_t PLLFREQ0; /**< PLL Frequency 0 */ + __I uint32_t PLLFREQ1; /**< PLL Frequency 1 */ + __I uint32_t PLLSTAT; /**< PLL Frequency Status */ + __I uint32_t RESERVED7[7]; /**< Reserved */ + __IO uint32_t SLPPWRCFG; /**< Sleep Power Configuration */ + __IO uint32_t DSLPPWRCFG; /**< Deep-Sleep Power Configuration */ + __I uint32_t RESERVED8[9]; /**< Reserved */ + __IO uint32_t LDOSPCTL; /**< LDO Sleep Power Control */ + __I uint32_t LDOSPCAL; /**< LDO Sleep Power Calibration */ + __IO uint32_t LDODPCTL; /**< LDO Deep-Sleep Power Control */ + __I uint32_t LDODPCAL; /**< LDO Deep-Sleep Power Calibration */ + __I uint32_t RESERVED9[2]; /**< Reserved */ + __I uint32_t SDPMST; /**< Sleep/Deep-Sleep Power Mode Status */ + __I uint32_t RESERVED10[76]; /**< Reserved */ + __I uint32_t PPWD; /**< WDT Peripheral Present */ + __I uint32_t PPTIMER; /**< GPT Peripheral Present */ + __I uint32_t PPGPIO; /**< GPIO Peripheral Present */ + __I uint32_t PPDMA; /**< UDMA Peripheral Present */ + __I uint32_t RESERVED11[1]; /**< Reserved */ + __I uint32_t PPHIB; /**< HIB Peripheral Present */ + __I uint32_t PPUART; /**< UART Peripheral Present */ + __I uint32_t PPSSI; /**< SSI Peripheral Present */ + __I uint32_t PPI2C; /**< I2C Peripheral Present */ + __I uint32_t RESERVED12[1]; /**< Reserved */ + __I uint32_t PPUSB; /**< USB Peripheral Present */ + __I uint32_t RESERVED13[2]; /**< Reserved */ + __I uint32_t PPCAN; /**< CAN Peripheral Present */ + __I uint32_t PPADC; /**< ADC Peripheral Present */ + __I uint32_t PPACMP; /**< ACMP Peripheral Present */ + __I uint32_t PPPWM; /**< PWM Peripheral Present */ + __I uint32_t PPQEI; /**< QEI Peripheral Present */ + __I uint32_t RESERVED14[4]; /**< Reserved */ + __I uint32_t PPEEPROM; /**< EEPROM Peripheral Present */ + __I uint32_t PPWTIMER; /**< Wide GPT Peripheral Present */ + __I uint32_t RESERVED15[104];/**< Reserved */ + __IO uint32_t SRWD; /**< WDT Software Reset */ + __IO uint32_t SRTIMER; /**< GPT Software Reset */ + __IO uint32_t SRGPIO; /**< GPIO Software Reset */ + __IO uint32_t SRDMA; /**< UDMA Software Reset */ + __I uint32_t RESERVED16[1]; /**< Reserved */ + __IO uint32_t SRHIB; /**< HIB Software Reset */ + __IO uint32_t SRUART; /**< UART Software Reset */ + __IO uint32_t SRSSI; /**< SSI Software Reset */ + __IO uint32_t SRI2C; /**< I2C Software Reset */ + __I uint32_t RESERVED17[1]; /**< Reserved */ + __IO uint32_t SRUSB; /**< USB Software Reset */ + __I uint32_t RESERVED18[2]; /**< Reserved */ + __IO uint32_t SRCAN; /**< CAN Software Reset */ + __IO uint32_t SRADC; /**< ADC Software Reset */ + __IO uint32_t SRACMP; /**< ACMP Software Reset */ + __IO uint32_t SRPWM; /**< PWM Software Reset */ + __IO uint32_t SRQEI; /**< QEI Software Reset */ + __I uint32_t RESERVED19[4]; /**< Reserved */ + __IO uint32_t SREEPROM; /**< EEPROM Software Reset */ + __IO uint32_t SRWTIMER; /**< Wide GPT Software Reset */ + __I uint32_t RESERVED20[40]; /**< Reserved */ + __IO uint32_t RCGCWD; /**< WDT Run Mode Clock Gating Control */ + __IO uint32_t RCGCTIMER; /**< GPT Run Mode Clock Gating Control */ + __IO uint32_t RCGCGPIO; /**< GPIO Run Mode Clock Gating Control */ + __IO uint32_t RCGCDMA; /**< UDMA Run Mode Clock Gating Control */ + __I uint32_t RESERVED21[1]; /**< Reserved */ + __IO uint32_t RCGCHIB; /**< HIB Run Mode Clock Gating Control */ + __IO uint32_t RCGCUART; /**< UART Run Mode Control */ + __IO uint32_t RCGCSSI; /**< SSI Run Mode Clock Gating Control */ + __IO uint32_t RCGCI2C; /**< I2C Run Mode Clock Gating Control */ + __I uint32_t RESERVED22[1]; /**< Reserved */ + __IO uint32_t RCGCUSB; /**< USB Run Mode Clock Gating Control */ + __I uint32_t RESERVED23[2]; /**< Reserved */ + __IO uint32_t RCGCCAN; /**< CAN Run Mode Clock Gating Control */ + __IO uint32_t RCGCADC; /**< ADC Run Mode Clock Gating Control */ + __IO uint32_t RCGCACMP; /**< ACMP Run Mode Clock Gating Control */ + __IO uint32_t RCGCPWM; /**< PWM Run Mode Clock Gating Control */ + __IO uint32_t RCGCQEI; /**< QEI Run Mode Clock Gating Control */ + __I uint32_t RESERVED24[4]; /**< Reserved */ + __IO uint32_t RCGCEEPROM; /**< EEPROM Run Mode Clock Gating Control */ + __IO uint32_t RCGCWTIMER; /**< Wide GPT Run Mode Clock Gating Control */ + __I uint32_t RESERVED25[40]; /**< Reserved */ + __IO uint32_t SCGCWD; /**< WDT Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCTIMER; /**< GPT Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCGPIO; /**< GPIO Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCDMA; /**< UDMA Sleep Mode Clock Gating Control */ + __I uint32_t RESERVED26[1]; /**< Reserved */ + __IO uint32_t SCGCHIB; /**< HIB Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCUART; /**< UART Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCSSI; /**< SSI Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCI2C; /**< I2C Sleep Mode Clock Gating Control */ + __I uint32_t RESERVED27[1]; /**< Reserved */ + __IO uint32_t SCGCUSB; /**< USB Sleep Mode Clock Gating Control */ + __I uint32_t RESERVED28[2]; /**< Reserved */ + __IO uint32_t SCGCCAN; /**< CAN Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCADC; /**< ADC Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCACMP; /**< ACMP Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCPWM; /**< PWM Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCQEI; /**< QEI Sleep Mode Clock Gating Control */ + __I uint32_t RESERVED29[4]; /**< Reserved */ + __IO uint32_t SCGCEEPROM; /**< EEPROM Sleep Mode Clock Gating Control */ + __IO uint32_t SCGCWTIMER; /**< Wide GPT Sleep Mode Clock Gating Control*/ + __I uint32_t RESERVED30[40]; /**< Reserved */ + __IO uint32_t DCGCWD; /**< WDT Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCTIMER; /**< GPT Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCGPIO; /**< GPIO Deep-Sleep Mode Clock Gating + Control */ + __IO uint32_t DCGCDMA; /**< UDMA Deep-Sleep Mode Clock Gating + Control */ + __I uint32_t RESERVED31[1]; /**< Reserved */ + __IO uint32_t DCGCHIB; /**< HIB Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCUART; /**< UART Deep-Sleep Mode Clock Gating + Control */ + __IO uint32_t DCGCSSI; /**< SSI Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCI2C; /**< I2C Deep-Sleep Mode Clock Gating Control*/ + __I uint32_t RESERVED32[1]; /**< Reserved */ + __IO uint32_t DCGCUSB; /**< USB Deep-Sleep Mode Clock Gating Control*/ + __I uint32_t RESERVED33[2]; /**< Reserved */ + __IO uint32_t DCGCCAN; /**< CAN Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCADC; /**< ADC Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCACMP; /**< ACMP Deep-Sleep Mode Clock Gating + Control */ + __IO uint32_t DCGCPWM; /**< PWM Deep-Sleep Mode Clock Gating Control*/ + __IO uint32_t DCGCQEI; /**< QEI Deep-Sleep Mode Clock Gating Control*/ + __I uint32_t RESERVED34[4]; /**< Reserved */ + __IO uint32_t DCGCEEPROM; /**< EEPROM Deep-Sleep Mode Clock Gating + Control */ + __IO uint32_t DCGCWTIMER; /**< Wide GPT Deep-Sleep Mode Clock Gating + Control */ + __I uint32_t RESERVED35[104];/**< Reserved */ + __IO uint32_t PRWD; /**< WDT Peripheral Ready */ + __IO uint32_t PRTIMER; /**< GPT Peripheral Ready */ + __IO uint32_t PRGPIO; /**< GPIO Peripheral Ready */ + __IO uint32_t PRDMA; /**< UDMA Peripheral Ready */ + __I uint32_t RESERVED36[1]; /**< Reserved */ + __IO uint32_t PRHIB; /**< HIB Peripheral Ready */ + __IO uint32_t PRUART; /**< UART Peripheral Ready */ + __IO uint32_t PRSSI; /**< SSI Peripheral Ready */ + __IO uint32_t PRI2C; /**< I2C Peripheral Ready */ + __I uint32_t RESERVED37[1]; /**< Reserved */ + __IO uint32_t PRUSB; /**< USB Peripheral Ready */ + __I uint32_t RESERVED38[2]; /**< Reserved */ + __IO uint32_t PRCAN; /**< CAN Peripheral Ready */ + __IO uint32_t PRADC; /**< ADC Peripheral Ready */ + __IO uint32_t PRACMP; /**< ACMP Peripheral Ready */ + __IO uint32_t PRPWM; /**< PWM Peripheral Ready */ + __IO uint32_t PRQEI; /**< QEI Peripheral Ready */ + __I uint32_t RESERVED39[4]; /**< Reserved */ + __IO uint32_t PREEPROM; /**< EEPROM Peripheral Ready */ + __IO uint32_t PRWTIMER; /**< Wide GPT Peripheral Ready */ +} SYSCTL_TypeDef; + +/** + * @brief Universal Asynchronous Receiver/Transmitter + */ +typedef struct +{ + __IO uint32_t DR; /**< Data */ + union { + __I uint32_t RSR; /**< Receive Status */ + __O uint32_t ECR; /**< Error Clear */ + }; + __I uint32_t RESERVED0[4]; /**< Reserved */ + __I uint32_t FR; /**< Flag */ + __I uint32_t RESERVED1[1]; /**< Reserved */ + __IO uint32_t ILPR; /**< IrDA Low-Power Register */ + __IO uint32_t IBRD; /**< Integer Baud-Rate Divisor */ + __IO uint32_t FBRD; /**< Fractional Baud-Rate Divisor */ + __IO uint32_t LCRH; /**< Line Control */ + __IO uint32_t CTL; /**< Control */ + __IO uint32_t IFLS; /**< Interrupt FIFO Level Select */ + __IO uint32_t IM; /**< Interrupt Mask */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __O uint32_t ICR; /**< Interrupt Clear */ + __IO uint32_t DMACTL; /**< DMA Control */ + __I uint32_t RESERVED2[22]; /**< Reserved */ + __IO uint32_t BIT9ADDR; /**< 9-Bit Self Address */ + __IO uint32_t BIT9AMASK; /**< 9-Bit Self Address Mask */ + __I uint32_t RESERVED3[965]; /**< Reserved */ + __I uint32_t PP; /**< Peripheral Properties */ + __I uint32_t RESERVED4[1]; /**< Reserved */ + __IO uint32_t CC; /**< Clock Configuration */ +} UART_TypeDef; + +/** + * @brief Micro Direct Memory Access + */ +typedef struct +{ + __IO uint32_t STAT; /**< Status */ + __O uint32_t CFG; /**< Configuration */ + __IO uint32_t CTLBASE; /**< Channel Control Base Pointer */ + __IO uint32_t ALTBASE; /**< Alternate Channel Control Base Pointer */ + __IO uint32_t WAITSTAT; /**< Channel Wait-on-Request Status */ + __O uint32_t SWREQ; /**< Channel Software Request */ + __IO uint32_t USEBURSTSET; /**< Channel Useburst Set */ + __O uint32_t USEBURSTCLR; /**< Channel Useburst Clear */ + __IO uint32_t REQMASKSET; /**< Channel Request Mask Set */ + __O uint32_t REQMASKCLR; /**< Channel Request Mask Clear */ + __IO uint32_t ENASET; /**< Channel Enable Set */ + __O uint32_t ENACLR; /**< Channel Enable Clear */ + __IO uint32_t ALTSET; /**< Channel Primary Alternate Set */ + __O uint32_t ALTCLR; /**< Channel Primary Alternate Clear */ + __IO uint32_t PRIOSET; /**< Channel Priority Set */ + __O uint32_t PRIOCLR; /**< Channel Priority Clear */ + __I uint32_t RESERVED0[3]; /**< Reserved */ + __IO uint32_t ERRCLR; /**< Bus Error Clear */ + __I uint32_t RESERVED1[300]; /**< Reserved */ + __IO uint32_t CHASGN; /**< Channel Assignment */ + __IO uint32_t CHIS; /**< Channel Interrupt Status */ + __I uint32_t RESERVED2[2]; /**< Reserved */ + __IO uint32_t CHMAP0; /**< Channel Map Select 0 */ + __IO uint32_t CHMAP1; /**< Channel Map Select 1 */ + __IO uint32_t CHMAP2; /**< Channel Map Select 2 */ + __IO uint32_t CHMAP3; /**< Channel Map Select 3 */ +} UDMA_TypeDef; + +// USB + +/** + * @brief Watchdog Timer + */ +typedef struct +{ + __IO uint32_t LOAD; /**< Load */ + __I uint32_t VALUE; /**< Value */ + __IO uint32_t CTL; /**< Control */ + __O uint32_t ICR; /**< Interrupt Clear */ + __I uint32_t RIS; /**< Raw Interrupt Status */ + __I uint32_t MIS; /**< Masked Interrupt Status */ + __I uint32_t RESERVED0[256]; /**< Reserved */ + __IO uint32_t TEST; /**< Test */ + __I uint32_t RESERVED1[505]; /**< Reserved */ + __IO uint32_t LOCK; /**< Lock */ +} WATCHDOG_TypeDef; + +/** + * @} + */ + +/** + * @addtogroup Peripheral_memorymap + * @{ + */ + +#define SYSCTL_BASE 0x400FE000 +#define HIB_BASE 0x400FC000 +#define FLASH_BASE 0x400FD000 +#define EEPROM_BASE 0x400AF000 +#define UDMA_BASE 0x400FF000 +#define GPIOA_BASE 0x40004000 +#define GPIOB_BASE 0x40005000 +#define GPIOC_BASE 0x40006000 +#define GPIOD_BASE 0x40007000 +#define GPIOE_BASE 0x40024000 +#define GPIOF_BASE 0x40025000 +#define GPT0_BASE 0x40030000 +#define GPT1_BASE 0x40031000 +#define GPT2_BASE 0x40032000 +#define GPT3_BASE 0x40033000 +#define GPT4_BASE 0x40034000 +#define GPT5_BASE 0x40035000 +#define WGPT0_BASE 0x40036000 +#define WGPT1_BASE 0x40037000 +#define WGPT2_BASE 0x4004C000 +#define WGPT3_BASE 0x4004D000 +#define WGPT4_BASE 0x4004E000 +#define WGPT5_BASE 0x4004F000 +#define WDT0_BASE 0x40000000 +#define WDT1_BASE 0x40001000 +#define ADC0_BASE 0x40038000 +#define ADC1_BASE 0x40039000 +#define UART0_BASE 0x4000C000 +#define UART1_BASE 0x4000D000 +#define UART2_BASE 0x4000E000 +#define UART3_BASE 0x4000F000 +#define UART4_BASE 0x40010000 +#define UART5_BASE 0x40011000 +#define UART6_BASE 0x40012000 +#define UART7_BASE 0x40013000 +#define SSI0_BASE 0x40008000 +#define SSI1_BASE 0x40009000 +#define SSI2_BASE 0x4000A000 +#define SSI3_BASE 0x4000B000 +#define I2C0_BASE 0x40020000 +#define I2C1_BASE 0x40021000 +#define I2C2_BASE 0x40022000 +#define I2C3_BASE 0x40023000 +#define CAN0_BASE 0x40040000 +#define CAN1_BASE 0x40041000 +// usb +#define AC_BASE 0x4003C000 +#define PWM0_BASE 0x40028000 +#define PWM1_BASE 0x40029000 +#define QEI0_BASE 0x4002C000 +#define QEI1_BASE 0x4002D000 + +/** + * @} + */ + +/** + * @addtogroup Peripheral_declaration + * @{ + */ + +#define SYSCTL ((SYSCTL_TypeDef *) SYSCTL_BASE) +#define HIB ((HIB_TypeDef *) HIB_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_BASE) +#define EEPROM ((EEPROM_TypeDef *) EEPROM_BASE) +#define UDMA ((UDMA_TypeDef *) UDMA_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 GPT0 ((GPT_TypeDef *) GPT0_BASE) +#define GPT1 ((GPT_TypeDef *) GPT1_BASE) +#define GPT2 ((GPT_TypeDef *) GPT2_BASE) +#define GPT3 ((GPT_TypeDef *) GPT3_BASE) +#define GPT4 ((GPT_TypeDef *) GPT4_BASE) +#define GPT5 ((GPT_TypeDef *) GPT5_BASE) +#define WGPT0 ((GPT_TypeDef *) WGPT0_BASE) +#define WGPT1 ((GPT_TypeDef *) WGPT1_BASE) +#define WGPT2 ((GPT_TypeDef *) WGPT2_BASE) +#define WGPT3 ((GPT_TypeDef *) WGPT3_BASE) +#define WGPT4 ((GPT_TypeDef *) WGPT4_BASE) +#define WGPT5 ((GPT_TypeDef *) WGPT5_BASE) +#define ADC0 ((ADC_TypeDef*) ADC0_BASE) +#define ADC1 ((ADC_TypeDef*) ADC1_BASE) +#define UART0 ((UART_TypeDef *) UART0_BASE) +#define UART1 ((UART_TypeDef *) UART1_BASE) +#define UART2 ((UART_TypeDef *) UART2_BASE) +#define UART3 ((UART_TypeDef *) UART3_BASE) +#define UART4 ((UART_TypeDef *) UART4_BASE) +#define UART5 ((UART_TypeDef *) UART5_BASE) +#define UART6 ((UART_TypeDef *) UART6_BASE) +#define UART7 ((UART_TypeDef *) UART7_BASE) +#define SSI0 ((SSI_TypeDef *) SSI0_BASE) +#define SSI1 ((SSI_TypeDef *) SSI1_BASE) +#define SSI2 ((SSI_TypeDef *) SSI2_BASE) +#define SSI3 ((SSI_TypeDef *) SSI3_BASE) +#define I2C0 ((I2C_TypeDef *) I2C0_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define CAN0 ((CAN_TypeDef *) CAN0_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +// usb +#define AC ((AC_TypeDef *) AC_BASE) +#define PWM0 ((PWM_TypeDef *) PWM0_BASE) +#define PWM1 ((PWM_TypeDef *) PWM1_BASE) +#define QEI0 ((QEI_TypeDef *) QEI0_BASE) +#define QEI1 ((QEI_TypeDef *) QEI1_BASE) + +/** + * @} + */ + +#endif /* __TM4C123x_H */ + +/** + * @} + */ + +/** + * @} + */ |