diff --git a/f4/src/stm32f4xx_hal_i2c.c b/f4/src/stm32f4xx_hal_i2c.c index de1fce188c537c58278e10c04f294430df5d14f2..9db82b7f723b4203e7f14e5eba3b597000b04f3b 100644 --- a/f4/src/stm32f4xx_hal_i2c.c +++ b/f4/src/stm32f4xx_hal_i2c.c @@ -2158,9 +2158,10 @@ HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevA { /* Prevent unused argument(s) compilation warning */ UNUSED(DevAddress); + uint32_t sr2itflags = READ_REG(hi2c->Instance->SR2); /* Abort Master transfer during Receive or Transmit process */ - if(hi2c->Mode == HAL_I2C_MODE_MASTER) + if(hi2c->Mode == HAL_I2C_MODE_MASTER || sr2itflags&0x0001) { /* Process Locked */ __HAL_LOCK(hi2c); @@ -3357,7 +3358,7 @@ void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) uint32_t CurrentMode = hi2c->Mode; /* Master or Memory mode selected */ - if((CurrentMode == HAL_I2C_MODE_MASTER) || (CurrentMode == HAL_I2C_MODE_MEM)) + if((CurrentMode == HAL_I2C_MODE_MASTER) || (CurrentMode == HAL_I2C_MODE_MEM) || sr2itflags&0x0001) { /* SB Set ----------------------------------------------------------------*/ if(((sr1itflags & I2C_FLAG_SB) != RESET) && ((itsources & I2C_IT_EVT) != RESET))