Removed EXT driver files
This commit is contained in:
parent
2a01a63f86
commit
9a21d8e143
|
@ -2,12 +2,8 @@ ifeq ($(USE_SMART_BUILD),yes)
|
|||
ifneq ($(findstring HAL_USE_PAL TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/ports/TIVA/LLD/GPIO/hal_pal_lld.c
|
||||
endif
|
||||
ifneq ($(findstring HAL_USE_EXT TRUE,$(HALCONF)),)
|
||||
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/ports/TIVA/LLD/GPIO/hal_ext_lld.c
|
||||
endif
|
||||
else
|
||||
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/ports/TIVA/LLD/GPIO/hal_pal_lld.c
|
||||
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/ports/TIVA/LLD/GPIO/hal_ext_lld.c
|
||||
endif
|
||||
|
||||
PLATFORMINC += $(CHIBIOS_CONTRIB)/os/hal/ports/TIVA/LLD/GPIO
|
||||
|
|
|
@ -1,981 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2014..2017 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 GPIO/hal_ext_lld.c
|
||||
* @brief Tiva EXT subsystem low level driver source.
|
||||
*
|
||||
* @addtogroup EXT
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
#if HAL_USE_EXT || defined(__DOXYGEN__)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Generic interrupt serving code for multiple pins per interrupt
|
||||
* handler.
|
||||
*/
|
||||
#define ext_lld_serve_port_interrupt(gpio, start) \
|
||||
do { \
|
||||
uint32_t mis = HWREG(gpio + GPIO_O_MIS); \
|
||||
\
|
||||
HWREG(gpio + GPIO_O_ICR) = mis; \
|
||||
\
|
||||
if (mis & (1 << 0)) { \
|
||||
EXTD1.config->channels[start + 0].cb(&EXTD1, start + 0); \
|
||||
} \
|
||||
if (mis & (1 << 1)) { \
|
||||
EXTD1.config->channels[start + 1].cb(&EXTD1, start + 1); \
|
||||
} \
|
||||
if (mis & (1 << 2)) { \
|
||||
EXTD1.config->channels[start + 2].cb(&EXTD1, start + 2); \
|
||||
} \
|
||||
if (mis & (1 << 3)) { \
|
||||
EXTD1.config->channels[start + 3].cb(&EXTD1, start + 3); \
|
||||
} \
|
||||
if (mis & (1 << 4)) { \
|
||||
EXTD1.config->channels[start + 4].cb(&EXTD1, start + 4); \
|
||||
} \
|
||||
if (mis & (1 << 5)) { \
|
||||
EXTD1.config->channels[start + 5].cb(&EXTD1, start + 5); \
|
||||
} \
|
||||
if (mis & (1 << 6)) { \
|
||||
EXTD1.config->channels[start + 6].cb(&EXTD1, start + 6); \
|
||||
} \
|
||||
if (mis & (1 << 7)) { \
|
||||
EXTD1.config->channels[start + 7].cb(&EXTD1, start + 7); \
|
||||
} \
|
||||
} while (0);
|
||||
|
||||
/**
|
||||
* @brief Generic interrupt serving code for single pin per interrupt
|
||||
* handler.
|
||||
*/
|
||||
#define ext_lld_serve_pin_interrupt(gpiop, start, pin) \
|
||||
do { \
|
||||
gpiop->ICR = (1 << pin); \
|
||||
EXTD1.config->channels[start].cb(&EXTD1, start); \
|
||||
} while (0);
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief EXTD1 driver identifier.
|
||||
*/
|
||||
EXTDriver EXTD1;
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
const ioportid_t gpio_table[] =
|
||||
{
|
||||
#if TIVA_HAS_GPIOA
|
||||
GPIOA,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOB
|
||||
GPIOB,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOC
|
||||
GPIOC,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOD
|
||||
GPIOD,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOE
|
||||
GPIOE,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOF
|
||||
GPIOF,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOG
|
||||
GPIOG,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOH
|
||||
GPIOH,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOJ
|
||||
GPIOJ,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOK
|
||||
GPIOK,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOL
|
||||
GPIOL,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOM
|
||||
GPIOM,
|
||||
#endif
|
||||
#if TIVA_HAS_GPION
|
||||
GPION,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOP
|
||||
GPIOP,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOQ
|
||||
GPIOQ,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOR
|
||||
GPIOR,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOS
|
||||
GPIOS,
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOT
|
||||
GPIOT,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Enables GPIO IRQ sources.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static void ext_lld_irq_enable(void)
|
||||
{
|
||||
#if TIVA_HAS_GPIOA
|
||||
nvicEnableVector(TIVA_GPIOA_NUMBER, TIVA_EXT_GPIOA_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOB
|
||||
nvicEnableVector(TIVA_GPIOB_NUMBER, TIVA_EXT_GPIOB_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOC
|
||||
nvicEnableVector(TIVA_GPIOC_NUMBER, TIVA_EXT_GPIOC_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOD
|
||||
nvicEnableVector(TIVA_GPIOD_NUMBER, TIVA_EXT_GPIOD_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOE
|
||||
nvicEnableVector(TIVA_GPIOE_NUMBER, TIVA_EXT_GPIOE_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOF
|
||||
nvicEnableVector(TIVA_GPIOF_NUMBER, TIVA_EXT_GPIOF_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOG
|
||||
nvicEnableVector(TIVA_GPIOG_NUMBER, TIVA_EXT_GPIOG_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOH
|
||||
nvicEnableVector(TIVA_GPIOH_NUMBER, TIVA_EXT_GPIOH_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOJ
|
||||
nvicEnableVector(TIVA_GPIOJ_NUMBER, TIVA_EXT_GPIOJ_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOK
|
||||
nvicEnableVector(TIVA_GPIOK_NUMBER, TIVA_EXT_GPIOK_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOL
|
||||
nvicEnableVector(TIVA_GPIOL_NUMBER, TIVA_EXT_GPIOL_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOM
|
||||
nvicEnableVector(TIVA_GPIOM_NUMBER, TIVA_EXT_GPIOM_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPION
|
||||
nvicEnableVector(TIVA_GPION_NUMBER, TIVA_EXT_GPION_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOP
|
||||
nvicEnableVector(TIVA_GPIOP0_NUMBER, TIVA_EXT_GPIOP0_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP1_NUMBER, TIVA_EXT_GPIOP1_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP2_NUMBER, TIVA_EXT_GPIOP2_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP3_NUMBER, TIVA_EXT_GPIOP3_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP4_NUMBER, TIVA_EXT_GPIOP4_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP5_NUMBER, TIVA_EXT_GPIOP5_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP6_NUMBER, TIVA_EXT_GPIOP6_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOP7_NUMBER, TIVA_EXT_GPIOP7_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOQ
|
||||
nvicEnableVector(TIVA_GPIOQ0_NUMBER, TIVA_EXT_GPIOQ0_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ1_NUMBER, TIVA_EXT_GPIOQ1_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ2_NUMBER, TIVA_EXT_GPIOQ2_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ3_NUMBER, TIVA_EXT_GPIOQ3_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ4_NUMBER, TIVA_EXT_GPIOQ4_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ5_NUMBER, TIVA_EXT_GPIOQ5_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ6_NUMBER, TIVA_EXT_GPIOQ6_IRQ_PRIORITY);
|
||||
nvicEnableVector(TIVA_GPIOQ7_NUMBER, TIVA_EXT_GPIOQ7_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOR
|
||||
nvicEnableVector(TIVA_GPIOR_NUMBER, TIVA_EXT_GPIOR_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOS
|
||||
nvicEnableVector(TIVA_GPIOS_NUMBER, TIVA_EXT_GPIOS_IRQ_PRIORITY);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOT
|
||||
nvicEnableVector(TIVA_GPIOT_NUMBER, TIVA_EXT_GPIOT_IRQ_PRIORITY);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables GPIO IRQ sources.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static void ext_lld_irq_disable(void)
|
||||
{
|
||||
#if TIVA_HAS_GPIOA
|
||||
nvicDisableVector(TIVA_GPIOA_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOB
|
||||
nvicDisableVector(TIVA_GPIOB_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOC
|
||||
nvicDisableVector(TIVA_GPIOC_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOD
|
||||
nvicDisableVector(TIVA_GPIOD_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOE
|
||||
nvicDisableVector(TIVA_GPIOE_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOF
|
||||
nvicDisableVector(TIVA_GPIOF_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOG
|
||||
nvicDisableVector(TIVA_GPIOG_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOH
|
||||
nvicDisableVector(TIVA_GPIOH_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOJ
|
||||
nvicDisableVector(TIVA_GPIOJ_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOK
|
||||
nvicDisableVector(TIVA_GPIOK_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOL
|
||||
nvicDisableVector(TIVA_GPIOL_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOM
|
||||
nvicDisableVector(TIVA_GPIOM_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPION
|
||||
nvicDisableVector(TIVA_GPION_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOP
|
||||
nvicDisableVector(TIVA_GPIOP0_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP1_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP2_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP3_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP4_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP5_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP6_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOP7_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOQ
|
||||
nvicDisableVector(TIVA_GPIOQ0_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ1_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ2_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ3_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ4_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ5_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ6_NUMBER);
|
||||
nvicDisableVector(TIVA_GPIOQ7_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOR
|
||||
nvicDisableVector(TIVA_GPIOR_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOS
|
||||
nvicDisableVector(TIVA_GPIOS_NUMBER);
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOT
|
||||
nvicDisableVector(TIVA_GPIOT_NUMBER);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if TIVA_HAS_GPIOA || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOA interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOA_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOA, 0);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOB || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOB interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOB_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOB, 8);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOC || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOC interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOC_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOC, 16);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOD || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOD interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOD_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOD, 24);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOE || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOE interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOE_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOE, 32);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOF || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOF interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOF_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(GPIOF, 40);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOG || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOG interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOG_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOG, 48);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOH || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOH interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOH_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOH, 56);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOJ || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOJ interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOJ_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOJ, 64);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOK || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOK interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOK_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOK, 72);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOL || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOL interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOL_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOL, 80);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOM || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOM interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOM_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOM, 88);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPION || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPION interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPION_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPION, 96);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOP0 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP0_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 104, 0);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP1 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP1_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 105, 1);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP2 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP2_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 106, 2);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP3 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP3_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 107, 3);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP4 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP4_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 108, 4);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP5 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP5_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 109, 5);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP6 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP6_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 110, 6);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOP7 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOP7_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOP, 111, 7);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOQ0 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ0_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 112, 0);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ1 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ1_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 113, 1);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ2 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ2_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 114, 2);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ3 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ3_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 115, 3);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ4 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ4_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 116, 4);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ5 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ5_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 117, 5);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ6 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ6_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 118, 6);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIOQ7 interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOQ7_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_pin_interrupt(&GPIOQ, 119, 7);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOR || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOR interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOR_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOR, 120);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOS || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOS interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOS_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOS, 128);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOT || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @brief GPIOT interrupt handler.
|
||||
*
|
||||
* @isr
|
||||
*/
|
||||
OSAL_IRQ_HANDLER(TIVA_GPIOT_HANDLER)
|
||||
{
|
||||
OSAL_IRQ_PROLOGUE();
|
||||
|
||||
ext_lld_serve_port_interrupt(&GPIOT, 132);
|
||||
|
||||
OSAL_IRQ_EPILOGUE();
|
||||
}
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Low level EXT driver initialization.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
void ext_lld_init(void)
|
||||
{
|
||||
extObjectInit(&EXTD1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configures and activates the EXT peripheral.
|
||||
*
|
||||
* @param[in] extp pointer to the @p EXTDriver object
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
void ext_lld_start(EXTDriver *extp)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
if (extp->state == EXT_STOP) {
|
||||
ext_lld_irq_enable();
|
||||
}
|
||||
|
||||
/* Configuration of automatic channels.*/
|
||||
for (i = 0; i < EXT_MAX_CHANNELS; i++) {
|
||||
if (extp->config->channels[i].mode & EXT_CH_MODE_AUTOSTART) {
|
||||
ext_lld_channel_enable(extp, i);
|
||||
}
|
||||
else {
|
||||
ext_lld_channel_disable(extp, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the EXT peripheral.
|
||||
*
|
||||
* @param[in] extp pointer to the @p EXTDriver object
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
void ext_lld_stop(EXTDriver *extp)
|
||||
{
|
||||
if (extp->state == EXT_ACTIVE) {
|
||||
ext_lld_irq_disable();
|
||||
}
|
||||
|
||||
#if TIVA_HAS_GPIOA
|
||||
HWREG(GPIOA + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOB
|
||||
HWREG(GPIOB + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOC
|
||||
HWREG(GPIOC + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOD
|
||||
HWREG(GPIOD + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOE
|
||||
HWREG(GPIOE + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOF
|
||||
HWREG(GPIOF + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOG
|
||||
HWREG(GPIOG + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOH
|
||||
HWREG(GPIOH + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOJ
|
||||
HWREG(GPIOJ + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOK
|
||||
HWREG(GPIOK + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOL
|
||||
HWREG(GPIOL + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOM
|
||||
HWREG(GPIOM + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPION
|
||||
HWREG(GPION + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOP
|
||||
HWREG(GPIOP + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOQ
|
||||
HWREG(GPIOQ + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOR
|
||||
HWREG(GPIOR + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOS
|
||||
HWREG(GPIOS + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
#if TIVA_HAS_GPIOT
|
||||
HWREG(GPIOT + GPIO_O_IM) = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables an EXT channel.
|
||||
*
|
||||
* @param[in] extp pointer to the @p EXTDriver object
|
||||
* @param[in] channel channel to be enabled
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel)
|
||||
{
|
||||
uint32_t gpio;
|
||||
uint8_t pin;
|
||||
uint32_t im;
|
||||
|
||||
pin = channel & 0x07;
|
||||
gpio = gpio_table[channel >> 3];
|
||||
|
||||
/* Disable interrupts */
|
||||
im = HWREG(gpio + GPIO_O_IM);
|
||||
HWREG(gpio + GPIO_O_IM) = 0;
|
||||
|
||||
/* Configure pin to be edge-sensitive.*/
|
||||
HWREG(gpio + GPIO_O_IS) &= ~(1 << pin);
|
||||
|
||||
/* Programming edge registers.*/
|
||||
if ((extp->config->channels[channel].mode & EXT_CH_MODE_EDGES_MASK) ==
|
||||
EXT_CH_MODE_BOTH_EDGES) {
|
||||
HWREG(gpio + GPIO_O_IBE) |= (1 << pin);
|
||||
}
|
||||
else if ((extp->config->channels[channel].mode & EXT_CH_MODE_EDGES_MASK) ==
|
||||
EXT_CH_MODE_FALLING_EDGE) {
|
||||
HWREG(gpio + GPIO_O_IBE) &= ~(1 << pin);
|
||||
HWREG(gpio + GPIO_O_IEV) &= ~(1 << pin);
|
||||
}
|
||||
else if ((extp->config->channels[channel].mode & EXT_CH_MODE_EDGES_MASK) ==
|
||||
EXT_CH_MODE_RISING_EDGE) {
|
||||
HWREG(gpio + GPIO_O_IBE) &= ~(1 << pin);
|
||||
HWREG(gpio + GPIO_O_IEV) |= (1 << pin);
|
||||
}
|
||||
|
||||
/* Programming interrupt and event registers.*/
|
||||
if ((extp->config->channels[channel].cb != NULL) &&
|
||||
((extp->config->channels[channel].mode & EXT_CH_MODE_EDGES_MASK) !=
|
||||
EXT_CH_MODE_DISABLED)) {
|
||||
im |= (1 << pin);
|
||||
}
|
||||
else {
|
||||
im &= ~(1 << pin);
|
||||
}
|
||||
|
||||
/* Restore interrupts */
|
||||
HWREG(gpio + GPIO_O_IM) = im;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables an EXT channel.
|
||||
*
|
||||
* @param[in] extp pointer to the @p EXTDriver object
|
||||
* @param[in] channel channel to be disabled
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
void ext_lld_channel_disable(EXTDriver *extp, expchannel_t channel)
|
||||
{
|
||||
(void)extp;
|
||||
uint32_t gpio;
|
||||
uint8_t pin;
|
||||
|
||||
pin = channel & 0x07;
|
||||
gpio = gpio_table[channel >> 3];
|
||||
|
||||
HWREG(gpio + GPIO_O_IM) &= ~(1 << pin);
|
||||
}
|
||||
|
||||
#endif /* HAL_USE_EXT */
|
||||
|
||||
/** @} */
|
|
@ -1,523 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2014..2017 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 GPIO/hal_ext_lld.h
|
||||
* @brief Tiva EXT subsystem low level driver header.
|
||||
*
|
||||
* @addtogroup EXT
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef HAL_EXT_LLD_H
|
||||
#define HAL_EXT_LLD_H
|
||||
|
||||
#if HAL_USE_EXT || defined(__DOXYGEN__)
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of EXT per port.
|
||||
*/
|
||||
#define EXT_MAX_CHANNELS TIVA_GPIO_PINS
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @name Configuration options
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief GPIOA interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOA_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOA_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOB interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOB_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOB_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOC interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOC_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOC_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOD interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOD_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOD_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOE interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOE_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOE_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOF interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOF_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOF_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOG interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOG_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOG_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOH interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOH_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOH_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOJ interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOJ_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOJ_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOK interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOK_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOK_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOL interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOL_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOL_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOM interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOM_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOM_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPION interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPION_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPION_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP0 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP0_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP0_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP1 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP1_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP2 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP2_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP3 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP3_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP4 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP4_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP5 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP5_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP6 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP6_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP6_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOP7 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOP7_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOP7_IRQ_PRIORITY 3
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief GPIOQ0 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ0_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ0_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ1 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ1_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ2 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ2_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ3 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ3_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ4 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ4_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ5 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ5_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ6 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ6_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ6_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOQ7 interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOQ7_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOQ7_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOR interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOR_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOR_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOS interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOS_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOS_IRQ_PRIORITY 3
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief GPIOT interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(TIVA_EXT_GPIOT_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define TIVA_EXT_GPIOT_IRQ_PRIORITY 3
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if TIVA_HAS_GPIOA && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOA_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOA"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOB && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOB_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOB"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOC && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOC_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOC"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOD && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOD_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOD"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOE && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOE_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOE"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOF && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOF_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOF"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOG && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOG_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOG"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOH && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOH_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOH"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOJ && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOJ_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOJ"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOK && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOK_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOK"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOL && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOL_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOL"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOM && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOM_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOM"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPION && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPION_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPION"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP0"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP1 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP1_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP1"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP2 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP2_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP2"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP3 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP3_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP3"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP4 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP4_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP4"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP5 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP5_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP5"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP6 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP6_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP6"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOP7 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOP7_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOP7"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ0"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ1 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ1_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ1"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ2 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ2_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ2"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ3 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ3_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ3"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ4 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ4_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ4"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ5 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ5_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ5"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ6 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ6_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ6"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOQ7 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOQ7_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOQ7"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOR && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOR_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOR"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOS && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOS_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOS"
|
||||
#endif
|
||||
|
||||
#if TIVA_HAS_GPIOT && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(TIVA_EXT_GPIOT_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to GPIOT"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief EXT channel identifier.
|
||||
*/
|
||||
typedef uint32_t expchannel_t;
|
||||
|
||||
/**
|
||||
* @brief Type of an EXT generic notification callback.
|
||||
*
|
||||
* @param[in] extp pointer to the @p EXPDriver object triggering the
|
||||
* callback
|
||||
*/
|
||||
typedef void (*extcallback_t)(EXTDriver *extp, expchannel_t channel);
|
||||
|
||||
/**
|
||||
* @brief Channel configuration structure.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* @brief Channel mode.
|
||||
*/
|
||||
uint32_t mode;
|
||||
/**
|
||||
* @brief Channel callback.
|
||||
*/
|
||||
extcallback_t cb;
|
||||
} EXTChannelConfig;
|
||||
|
||||
/**
|
||||
* @brief Driver configuration structure.
|
||||
* @note It could be empty on some architectures.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* @brief Channel configurations.
|
||||
*/
|
||||
EXTChannelConfig channels[EXT_MAX_CHANNELS];
|
||||
/* End of the mandatory fields.*/
|
||||
} EXTConfig;
|
||||
|
||||
/**
|
||||
* @brief Structure representing an EXT driver.
|
||||
*/
|
||||
struct EXTDriver {
|
||||
/**
|
||||
* @brief Driver state.
|
||||
*/
|
||||
extstate_t state;
|
||||
/**
|
||||
* @brief Current configuration data.
|
||||
*/
|
||||
const EXTConfig *config;
|
||||
/* End of the mandatory fields.*/
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !defined(__DOXYGEN__)
|
||||
extern EXTDriver EXTD1;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void ext_lld_init(void);
|
||||
void ext_lld_start(EXTDriver *extp);
|
||||
void ext_lld_stop(EXTDriver *extp);
|
||||
void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel);
|
||||
void ext_lld_channel_disable(EXTDriver *extp, expchannel_t channel);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HAL_USE_EXT */
|
||||
|
||||
#endif /* HAL_EXT_LLD_H */
|
||||
|
||||
/** @} */
|
Loading…
Reference in New Issue