diff --git a/Source/system/interrupts.c b/Source/system/interrupts.c --- a/Source/system/interrupts.c +++ b/Source/system/interrupts.c @@ -8,6 +8,7 @@ #include "stm32f0xx.h" #include "system/gpio.h" #include "aprs/afsk.h" +#include "pressure.h" // Systick void SysTick_Handler(void) @@ -26,3 +27,14 @@ void TIM1_BRK_UP_TRG_COM_IRQHandler(void { HAL_TIM_IRQHandler(afsk_timer_gethandle()); } + + +// Handle I2C interrupts +void I2C1_IRQHandler(void) +{ + if (pressure_get_i2c_handle()->Instance->ISR & (I2C_FLAG_BERR | I2C_FLAG_ARLO | I2C_FLAG_OVR)) { + HAL_I2C_ER_IRQHandler(pressure_get_i2c_handle()); + } else { + HAL_I2C_EV_IRQHandler(pressure_get_i2c_handle()); + } +}