diff --git a/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.c b/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.c new file mode 100644 index 0000000000..e18dfba047 --- /dev/null +++ b/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.c @@ -0,0 +1,44 @@ +/* mbed Microcontroller Library + * SPDX-License-Identifier: BSD-3-Clause + ****************************************************************************** + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#include "cmsis.h" +#include "gpio_irq_device.h" + +// Used to return the index for channels array. +const exti_lines_t pin_lines_desc[16] = { + // EXTI0 + {.gpio_idx = 0, .irq_index = 0, .irq_n = EXTI0_IRQn}, // pin 0 + // EXTI1 + {.gpio_idx = 0, .irq_index = 1, .irq_n = EXTI1_IRQn}, // pin 1 + // EXTI2 + {.gpio_idx = 0, .irq_index = 2, .irq_n = EXTI2_IRQn}, // pin 2 + // EXTI3 + {.gpio_idx = 0, .irq_index = 3, .irq_n = EXTI3_IRQn}, // pin 3 + // EXTI4 + {.gpio_idx = 0, .irq_index = 4, .irq_n = EXTI4_IRQn}, // pin 4 + // EXTI5_9 + {.gpio_idx = 0, .irq_index = 5, .irq_n = EXTI9_5_IRQn},// pin 5 + {.gpio_idx = 1, .irq_index = 5, .irq_n = EXTI9_5_IRQn},// pin 6 + {.gpio_idx = 2, .irq_index = 5, .irq_n = EXTI9_5_IRQn},// pin 7 + {.gpio_idx = 3, .irq_index = 5, .irq_n = EXTI9_5_IRQn},// pin 8 + {.gpio_idx = 4, .irq_index = 5, .irq_n = EXTI9_5_IRQn},// pin 9 + // EXTI10_15 + {.gpio_idx = 0, .irq_index = 6, .irq_n = EXTI15_10_IRQn},// pin 10 + {.gpio_idx = 1, .irq_index = 6, .irq_n = EXTI15_10_IRQn},// pin 11 + {.gpio_idx = 2, .irq_index = 6, .irq_n = EXTI15_10_IRQn},// pin 12 + {.gpio_idx = 3, .irq_index = 6, .irq_n = EXTI15_10_IRQn},// pin 13 + {.gpio_idx = 4, .irq_index = 6, .irq_n = EXTI15_10_IRQn},// pin 14 + {.gpio_idx = 5, .irq_index = 6, .irq_n = EXTI15_10_IRQn} // pin 15 +}; + diff --git a/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.h b/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.h new file mode 100644 index 0000000000..cf99296891 --- /dev/null +++ b/targets/TARGET_STM/TARGET_STM32G4/gpio_irq_device.h @@ -0,0 +1,52 @@ +/* mbed Microcontroller Library + * SPDX-License-Identifier: BSD-3-Clause + ****************************************************************************** + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#ifndef MBED_GPIO_IRQ_DEVICE_H +#define MBED_GPIO_IRQ_DEVICE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "stm32g4xx_ll_exti.h" + +// Number of EXTI irq vectors (EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5_9, EXTI10_15) +#define CHANNEL_NUM (7) + +#define EXTI_IRQ0_NUM_LINES 1 +#define EXTI_IRQ1_NUM_LINES 1 +#define EXTI_IRQ2_NUM_LINES 1 +#define EXTI_IRQ3_NUM_LINES 1 +#define EXTI_IRQ4_NUM_LINES 1 +#define EXTI_IRQ5_NUM_LINES 5 +#define EXTI_IRQ6_NUM_LINES 6 + +// Max pins for one line (max with EXTI10_15) +#define MAX_PIN_LINE (EXTI_IRQ6_NUM_LINES) + +/* Structure to describe how the HW EXTI lines are defined in this HW */ +typedef struct exti_lines { + uint32_t gpio_idx; // an index entry for each EXIT line + uint32_t irq_index; // the IRQ index + IRQn_Type irq_n; // the corresponding EXTI IRQn +} exti_lines_t; + +// Used to return the index for channels array. +extern const exti_lines_t pin_lines_desc[]; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/targets/targets.json b/targets/targets.json index 1098310fa8..3ff190d80d 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -7562,7 +7562,6 @@ "MPU" ], "device_has_remove": [ - "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT",