diff --git a/include/libopencm3/stm32/common/exti_common_all.h b/include/libopencm3/stm32/common/exti_common_all.h
index 18596ad4..61753618 100644
--- a/include/libopencm3/stm32/common/exti_common_all.h
+++ b/include/libopencm3/stm32/common/exti_common_all.h
@@ -29,15 +29,6 @@
#define LIBOPENCM3_EXTI_COMMON_ALL_H
/**@{*/
-/* --- EXTI registers ------------------------------------------------------ */
-
-#define EXTI_IMR MMIO32(EXTI_BASE + 0x00)
-#define EXTI_EMR MMIO32(EXTI_BASE + 0x04)
-#define EXTI_RTSR MMIO32(EXTI_BASE + 0x08)
-#define EXTI_FTSR MMIO32(EXTI_BASE + 0x0c)
-#define EXTI_SWIER MMIO32(EXTI_BASE + 0x10)
-#define EXTI_PR MMIO32(EXTI_BASE + 0x14)
-
/* EXTI number definitions */
#define EXTI0 (1 << 0)
#define EXTI1 (1 << 1)
diff --git a/include/libopencm3/stm32/common/exti_common_v1.h b/include/libopencm3/stm32/common/exti_common_v1.h
new file mode 100644
index 00000000..d7e3140c
--- /dev/null
+++ b/include/libopencm3/stm32/common/exti_common_v1.h
@@ -0,0 +1,44 @@
+#pragma once
+
+/*
+ * This file is part of the libopencm3 project.
+ *
+ * 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 .
+ */
+
+/** @cond */
+#if defined(LIBOPENCM3_EXTI_H)
+/** @endcond */
+
+/**@{*/
+
+/* --- EXTI registers ------------------------------------------------------ */
+
+#define EXTI_IMR MMIO32(EXTI_BASE + 0x00)
+#define EXTI_EMR MMIO32(EXTI_BASE + 0x04)
+#define EXTI_RTSR MMIO32(EXTI_BASE + 0x08)
+#define EXTI_FTSR MMIO32(EXTI_BASE + 0x0c)
+#define EXTI_SWIER MMIO32(EXTI_BASE + 0x10)
+#define EXTI_PR MMIO32(EXTI_BASE + 0x14)
+
+BEGIN_DECLS
+
+END_DECLS
+
+/**@}*/
+
+#else
+#warning "exti_common_v1.h should not be included directly, only via exti.h"
+#endif
+/** @endcond */
diff --git a/include/libopencm3/stm32/f0/exti.h b/include/libopencm3/stm32/f0/exti.h
index 3a99f5bb..0a3aebad 100644
--- a/include/libopencm3/stm32/f0/exti.h
+++ b/include/libopencm3/stm32/f0/exti.h
@@ -35,6 +35,9 @@
/**@{*/
#include
+#include
+
+
/**@}*/
#endif
diff --git a/include/libopencm3/stm32/f1/exti.h b/include/libopencm3/stm32/f1/exti.h
index 10882107..8fe1862a 100644
--- a/include/libopencm3/stm32/f1/exti.h
+++ b/include/libopencm3/stm32/f1/exti.h
@@ -37,5 +37,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif
diff --git a/include/libopencm3/stm32/f2/exti.h b/include/libopencm3/stm32/f2/exti.h
index d21a921a..5015cde7 100644
--- a/include/libopencm3/stm32/f2/exti.h
+++ b/include/libopencm3/stm32/f2/exti.h
@@ -37,5 +37,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif
diff --git a/include/libopencm3/stm32/f3/exti.h b/include/libopencm3/stm32/f3/exti.h
index d94916db..c5ef4e93 100644
--- a/include/libopencm3/stm32/f3/exti.h
+++ b/include/libopencm3/stm32/f3/exti.h
@@ -38,6 +38,7 @@
/**@{*/
#include
+#include
/* --- EXTI registers ------------------------------------------------------ */
#define EXTI_IMR2 MMIO32(EXTI_BASE + 0x18)
diff --git a/include/libopencm3/stm32/f4/exti.h b/include/libopencm3/stm32/f4/exti.h
index b9106787..8557dd7d 100644
--- a/include/libopencm3/stm32/f4/exti.h
+++ b/include/libopencm3/stm32/f4/exti.h
@@ -37,5 +37,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif
diff --git a/include/libopencm3/stm32/l0/exti.h b/include/libopencm3/stm32/l0/exti.h
index b2af19b2..c1d90156 100644
--- a/include/libopencm3/stm32/l0/exti.h
+++ b/include/libopencm3/stm32/l0/exti.h
@@ -37,5 +37,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif
diff --git a/include/libopencm3/stm32/l1/exti.h b/include/libopencm3/stm32/l1/exti.h
index 0f309537..81915766 100644
--- a/include/libopencm3/stm32/l1/exti.h
+++ b/include/libopencm3/stm32/l1/exti.h
@@ -37,5 +37,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif
diff --git a/include/libopencm3/stm32/l4/exti.h b/include/libopencm3/stm32/l4/exti.h
index 3dd2c76c..627019dd 100644
--- a/include/libopencm3/stm32/l4/exti.h
+++ b/include/libopencm3/stm32/l4/exti.h
@@ -19,5 +19,6 @@
#define LIBOPENCM3_EXTI_H
#include
+#include
#endif