From a9b71e2f8cc8ed57fe4eda4ff02023119fdfd098 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Sun, 19 Feb 2023 09:57:44 +0100 Subject: [PATCH] stm32g4: Add EXTI support The STM32G4xx series contain two regular EXTI v1 blocks; one at offset 0x00, the other at offset 0x20. Add support for EXTI. Signed-off-by: Benedikt Spranger --- include/libopencm3/stm32/exti.h | 2 + include/libopencm3/stm32/g4/exti.h | 59 ++++++++++++++++++++++++++++++ lib/stm32/g4/Makefile | 1 + 3 files changed, 62 insertions(+) create mode 100644 include/libopencm3/stm32/g4/exti.h diff --git a/include/libopencm3/stm32/exti.h b/include/libopencm3/stm32/exti.h index f6ea39de..a502dcc0 100644 --- a/include/libopencm3/stm32/exti.h +++ b/include/libopencm3/stm32/exti.h @@ -44,6 +44,8 @@ # include #elif defined(STM32G0) # include +#elif defined(STM32G4) +# include #elif defined(STM32H7) # include #else diff --git a/include/libopencm3/stm32/g4/exti.h b/include/libopencm3/stm32/g4/exti.h new file mode 100644 index 00000000..cb011745 --- /dev/null +++ b/include/libopencm3/stm32/g4/exti.h @@ -0,0 +1,59 @@ +/** @defgroup exti_defines EXTI Defines + * + * @brief Defined Constants and Types for the STM32G4xx External Interrupts + * + * + * @ingroup STM32G4xx_defines + * + * @author @htmlonly © @endhtmlonly 2023 + * Benedikt Spranger + * + * @version 1.0.0 + * + * @date 19 February 2023 + * + * LGPL License Terms @ref lgpl_license + */ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2023 Benedikt Spranger + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#ifndef LIBOPENCM3_EXTI_H +#define LIBOPENCM3_EXTI_H +/**@{*/ + +#include +#include + +/* --- EXTI registers ------------------------------------------------------ */ +#define EXTI_IMR1 EXTI_IMR +#define EXTI_EMR1 EXTI_EMR +#define EXTI_RTSR1 EXTI_RTSR +#define EXTI_FTSR1 EXTI_FTSR +#define EXTI_SWIER1 EXTI_SWIER +#define EXTI_PR1 EXTI_PR + +#define EXTI_IMR2 MMIO32(EXTI_BASE + 0x20) +#define EXTI_EMR2 MMIO32(EXTI_BASE + 0x24) +#define EXTI_RTSR2 MMIO32(EXTI_BASE + 0x28) +#define EXTI_FTSR2 MMIO32(EXTI_BASE + 0x2C) +#define EXTI_SWIER2 MMIO32(EXTI_BASE + 0x30) +#define EXTI_PR2 MMIO32(EXTI_BASE + 0x34) + +/**@}*/ +#endif diff --git a/lib/stm32/g4/Makefile b/lib/stm32/g4/Makefile index eac31138..fd35ab57 100644 --- a/lib/stm32/g4/Makefile +++ b/lib/stm32/g4/Makefile @@ -43,6 +43,7 @@ OBJS += dac_common_all.o dac_common_v2.o OBJS += desig_common_all.o desig_common_v1.o OBJS += dma_common_l1f013.o OBJS += dmamux.o +OBJS += exti_common_all.o OBJS += fdcan.o fdcan_common.o OBJS += flash.o flash_common_all.o flash_common_f.o flash_common_idcache.o OBJS += gpio_common_all.o gpio_common_f0234.o