diff --git a/include/libopencm3/stm32/exti.h b/include/libopencm3/stm32/exti.h index 77748034..aa676baf 100644 --- a/include/libopencm3/stm32/exti.h +++ b/include/libopencm3/stm32/exti.h @@ -32,6 +32,17 @@ #define EXTI_SWIER MMIO32(EXTI_BASE + 0x10) #define EXTI_PR MMIO32(EXTI_BASE + 0x14) +#if defined (STM32F3) + +#define EXTI_IMR2 MMIO32(EXTI_BASE + 0x18) +#define EXTI_EMR2 MMIO32(EXTI_BASE + 0x1C) +#define EXTI_RTSR2 MMIO32(EXTI_BASE + 0x20) +#define EXTI_FTSR2 MMIO32(EXTI_BASE + 0x24) +#define EXTI_SWIER2 MMIO32(EXTI_BASE + 0x28) +#define EXTI_PR2 MMIO32(EXTI_BASE + 0x2C) + +#endif + /* EXTI number definitions */ #define EXTI0 (1 << 0) #define EXTI1 (1 << 1) @@ -53,10 +64,15 @@ #define EXTI17 (1 << 17) #define EXTI18 (1 << 18) #define EXTI19 (1 << 19) + +#if !defined(STM32F3) + #define EXTI20 (1 << 20) #define EXTI21 (1 << 21) #define EXTI22 (1 << 22) +#endif + /* Trigger types */ typedef enum trigger_e { EXTI_TRIGGER_RISING, diff --git a/lib/stm32/exti2.c b/lib/stm32/exti2.c index 5a702dbf..8736d851 100644 --- a/lib/stm32/exti2.c +++ b/lib/stm32/exti2.c @@ -25,6 +25,8 @@ #include #if defined(STM32F2) #include +#elif defined(STM32F3) +#include #elif defined(STM32F4) #include #elif defined(STM32L1) @@ -141,23 +143,25 @@ void exti_select_source(uint32_t exti, uint32_t gpioport) case GPIOE: bits = 0xb; break; -#if defined(STM32L1) -#else +#if !defined(STM32L1) case GPIOF: bits = 0xa; break; +#if !defined(STM32F3) case GPIOG: bits = 0x9; break; #endif +#endif +#if !defined(STM32F3) case GPIOH: bits = 0x8; break; -#if defined(STM32L1) -#else +#if !defined(STM32L1) case GPIOI: bits = 0x7; break; +#endif #endif } diff --git a/lib/stm32/f3/Makefile b/lib/stm32/f3/Makefile index b116f90e..a824c9c4 100644 --- a/lib/stm32/f3/Makefile +++ b/lib/stm32/f3/Makefile @@ -34,7 +34,7 @@ CFLAGS = -Os -g \ # ARFLAGS = rcsv ARFLAGS = rcs -OBJS = rcc.o gpio.o flash.o adc.o +OBJS = rcc.o gpio.o flash.o adc.o exti2.o OBJS += gpio_common_all.o gpio_common_f234.o i2c_common_all.o\ dac_common_all.o