#include #include #ifndef EXTI_H #define EXTI_H typedef struct { EXTI_TypeDef* exti; SYSCFG_TypeDef* syscfg; } exti_t; exti_t* exti_init(EXTI_TypeDef* exti, SYSCFG_TypeDef* syscfg); void exti_external_interrupt(exti_t* exti, uint8_t line, uint8_t gpio); // Only 21 positions are now supported. This is too hard for other ones. void exti_rising_interrupt(exti_t* exti, uint8_t line); void exti_falling_interrupt(exti_t* exti, uint8_t line); void exti_disable_interrupt(exti_t* exti, uint8_t line); void exti_nvic_setup(exti_t* exti, uint8_t line); #endif // EXTI_H