/*\r
* Copyright (c) 2016, Freescale Semiconductor, Inc.\r
- * Copyright 2016-2018 NXP\r
+ * Copyright 2016-2019 NXP\r
* All rights reserved.\r
*\r
* SPDX-License-Identifier: BSD-3-Clause\r
\r
/*! @name Driver version */\r
/*@{*/\r
-/*! @brief LPC GPIO driver version 2.1.3. */\r
-#define FSL_GPIO_DRIVER_VERSION (MAKE_VERSION(2, 1, 3))\r
+/*! @brief LPC GPIO driver version. */\r
+#define FSL_GPIO_DRIVER_VERSION (MAKE_VERSION(2, 1, 5))\r
/*@}*/\r
\r
/*! @brief LPC GPIO direction definition */\r
typedef enum _gpio_pin_direction\r
{\r
- kGPIO_DigitalInput = 0U, /*!< Set current pin as digital input*/\r
+ kGPIO_DigitalInput = 0U, /*!< Set current pin as digital input*/\r
kGPIO_DigitalOutput = 1U, /*!< Set current pin as digital output*/\r
} gpio_pin_direction_t;\r
\r
uint8_t outputLogic; /*!< Set default output logic, no use in input */\r
} gpio_pin_config_t;\r
\r
+#if (defined(FSL_FEATURE_GPIO_HAS_INTERRUPT) && FSL_FEATURE_GPIO_HAS_INTERRUPT)\r
+#define GPIO_PIN_INT_LEVEL 0x00U\r
+#define GPIO_PIN_INT_EDGE 0x01U\r
+\r
+#define PINT_PIN_INT_HIGH_OR_RISE_TRIGGER 0x00U\r
+#define PINT_PIN_INT_LOW_OR_FALL_TRIGGER 0x01U\r
+\r
+/*! @brief GPIO Pin Interrupt enable mode */\r
+typedef enum _gpio_pin_enable_mode\r
+{\r
+ kGPIO_PinIntEnableLevel = GPIO_PIN_INT_LEVEL, /*!< Generate Pin Interrupt on level mode */\r
+ kGPIO_PinIntEnableEdge = GPIO_PIN_INT_EDGE /*!< Generate Pin Interrupt on edge mode */\r
+} gpio_pin_enable_mode_t;\r
+\r
+/*! @brief GPIO Pin Interrupt enable polarity */\r
+typedef enum _gpio_pin_enable_polarity\r
+{\r
+ kGPIO_PinIntEnableHighOrRise =\r
+ PINT_PIN_INT_HIGH_OR_RISE_TRIGGER, /*!< Generate Pin Interrupt on high level or rising edge */\r
+ kGPIO_PinIntEnableLowOrFall =\r
+ PINT_PIN_INT_LOW_OR_FALL_TRIGGER /*!< Generate Pin Interrupt on low level or falling edge */\r
+} gpio_pin_enable_polarity_t;\r
+\r
+/*! @brief LPC GPIO interrupt index definition */\r
+typedef enum _gpio_interrupt_index\r
+{\r
+ kGPIO_InterruptA = 0U, /*!< Set current pin as interrupt A*/\r
+ kGPIO_InterruptB = 1U, /*!< Set current pin as interrupt B*/\r
+} gpio_interrupt_index_t;\r
+\r
+/*! @brief Configures the interrupt generation condition. */\r
+typedef struct _gpio_interrupt_config\r
+{\r
+ uint8_t mode; /* The trigger mode of GPIO interrupts */\r
+ uint8_t polarity; /* The polarity of GPIO interrupts */\r
+} gpio_interrupt_config_t;\r
+#endif\r
+\r
/*******************************************************************************\r
* API\r
******************************************************************************/\r
*\r
* This is an example to define an input pin or output pin configuration:\r
* @code\r
- * // Define a digital input pin configuration,\r
+ * Define a digital input pin configuration,\r
* gpio_pin_config_t config =\r
* {\r
* kGPIO_DigitalInput,\r
* 0,\r
* }\r
- * //Define a digital output pin configuration,\r
+ * Define a digital output pin configuration,\r
* gpio_pin_config_t config =\r
* {\r
* kGPIO_DigitalOutput,\r
return (uint32_t)base->MPIN[port];\r
}\r
\r
+#if defined(FSL_FEATURE_GPIO_HAS_INTERRUPT) && FSL_FEATURE_GPIO_HAS_INTERRUPT\r
+/*!\r
+ * @brief Configures the gpio pin interrupt.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number\r
+ * @param pin GPIO pin number.\r
+ * @param config GPIO pin interrupt configuration..\r
+ */\r
+void GPIO_SetPinInterruptConfig(GPIO_Type *base, uint32_t port, uint32_t pin, gpio_interrupt_config_t *config);\r
+\r
+/*!\r
+ * @brief Enables multiple pins interrupt.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param index GPIO interrupt number.\r
+ * @param mask GPIO pin number macro.\r
+ */\r
+void GPIO_PortEnableInterrupts(GPIO_Type *base, uint32_t port, uint32_t index, uint32_t mask);\r
+\r
+/*!\r
+ * @brief Disables multiple pins interrupt.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param index GPIO interrupt number.\r
+ * @param mask GPIO pin number macro.\r
+ */\r
+void GPIO_PortDisableInterrupts(GPIO_Type *base, uint32_t port, uint32_t index, uint32_t mask);\r
+\r
+/*!\r
+ * @brief Clears pin interrupt flag. Status flags are cleared by\r
+ * writing a 1 to the corresponding bit position.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param index GPIO interrupt number.\r
+ * @param mask GPIO pin number macro.\r
+ */\r
+void GPIO_PortClearInterruptFlags(GPIO_Type *base, uint32_t port, uint32_t index, uint32_t mask);\r
+\r
+/*!\r
+ * @ Read port interrupt status.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number\r
+ * @param index GPIO interrupt number.\r
+ * @retval masked GPIO status value\r
+ */\r
+uint32_t GPIO_PortGetInterruptStatus(GPIO_Type *base, uint32_t port, uint32_t index);\r
+\r
+/*!\r
+ * @brief Enables the specific pin interrupt.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param pin GPIO pin number.\r
+ * @param index GPIO interrupt number.\r
+ */\r
+void GPIO_PinEnableInterrupt(GPIO_Type *base, uint32_t port, uint32_t pin, uint32_t index);\r
+\r
+/*!\r
+ * @brief Disables the specific pin interrupt.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param pin GPIO pin number.\r
+ * @param index GPIO interrupt number.\r
+ */\r
+void GPIO_PinDisableInterrupt(GPIO_Type *base, uint32_t port, uint32_t pin, uint32_t index);\r
+\r
+/*!\r
+ * @brief Clears the specific pin interrupt flag. Status flags are cleared by\r
+ * writing a 1 to the corresponding bit position.\r
+ *\r
+ * @param base GPIO base pointer.\r
+ * @param port GPIO port number.\r
+ * @param pin GPIO pin number.\r
+ * @param index GPIO interrupt number.\r
+ */\r
+void GPIO_PinClearInterruptFlag(GPIO_Type *base, uint32_t port, uint32_t pin, uint32_t index);\r
+\r
+#endif /* FSL_FEATURE_GPIO_HAS_INTERRUPT */\r
+\r
/*@}*/\r
\r
#if defined(__cplusplus)\r