@@ -686,9 +686,10 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
686
686
__HAL_RCC_I2C1_RELEASE_RESET ();
687
687
688
688
obj -> irq = I2C1_EV_IRQn ;
689
- #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
689
+ #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && \
690
+ !defined(STM32L0xx ) && !defined(STM32U0xx )
690
691
obj -> irqER = I2C1_ER_IRQn ;
691
- #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx */
692
+ #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
692
693
i2c_handles [I2C1_INDEX ] = handle ;
693
694
}
694
695
#endif // I2C1_BASE
@@ -699,9 +700,10 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
699
700
__HAL_RCC_I2C2_FORCE_RESET ();
700
701
__HAL_RCC_I2C2_RELEASE_RESET ();
701
702
obj -> irq = I2C2_EV_IRQn ;
702
- #if !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
703
+ #if !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx ) && \
704
+ !defined(STM32U0xx )
703
705
obj -> irqER = I2C2_ER_IRQn ;
704
- #endif /* !STM32F0xx && !STM32G0xx && !STM32L0xx */
706
+ #endif /* !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
705
707
i2c_handles [I2C2_INDEX ] = handle ;
706
708
}
707
709
#endif // I2C2_BASE
@@ -712,9 +714,9 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
712
714
__HAL_RCC_I2C3_FORCE_RESET ();
713
715
__HAL_RCC_I2C3_RELEASE_RESET ();
714
716
obj -> irq = I2C3_EV_IRQn ;
715
- #if !defined(STM32G0xx ) && !defined(STM32L0xx )
717
+ #if !defined(STM32G0xx ) && !defined(STM32L0xx ) && !defined( STM32U0xx )
716
718
obj -> irqER = I2C3_ER_IRQn ;
717
- #endif /* !STM32G0xx && !STM32L0xx */
719
+ #endif /* !STM32G0xx && !STM32L0xx && !STM32U0xx */
718
720
i2c_handles [I2C3_INDEX ] = handle ;
719
721
}
720
722
#endif // I2C3_BASE
@@ -725,7 +727,9 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
725
727
__HAL_RCC_I2C4_FORCE_RESET ();
726
728
__HAL_RCC_I2C4_RELEASE_RESET ();
727
729
obj -> irq = I2C4_EV_IRQn ;
730
+ #if !defined(STM32U0xx )
728
731
obj -> irqER = I2C4_ER_IRQn ;
732
+ #endif /* !STM32U0xx */
729
733
i2c_handles [I2C4_INDEX ] = handle ;
730
734
}
731
735
#endif // I2C4_BASE
@@ -780,10 +784,11 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
780
784
781
785
HAL_NVIC_SetPriority (obj -> irq , I2C_IRQ_PRIO , I2C_IRQ_SUBPRIO );
782
786
HAL_NVIC_EnableIRQ (obj -> irq );
783
- #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
787
+ #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && \
788
+ !defined(STM32L0xx ) && !defined(STM32U0xx )
784
789
HAL_NVIC_SetPriority (obj -> irqER , I2C_IRQ_PRIO , I2C_IRQ_SUBPRIO );
785
790
HAL_NVIC_EnableIRQ (obj -> irqER );
786
- #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx */
791
+ #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
787
792
788
793
/* Init the I2C */
789
794
if (HAL_I2C_Init (handle ) != HAL_OK ) {
@@ -807,9 +812,10 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
807
812
void i2c_deinit (i2c_t * obj )
808
813
{
809
814
HAL_NVIC_DisableIRQ (obj -> irq );
810
- #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
815
+ #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && \
816
+ !defined(STM32L0xx ) && !defined(STM32U0xx )
811
817
HAL_NVIC_DisableIRQ (obj -> irqER );
812
- #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx */
818
+ #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
813
819
HAL_I2C_DeInit (& (obj -> handle ));
814
820
/* Reset I2C GPIO pins as INPUT_ANALOG */
815
821
pin_function (obj -> scl , STM_PIN_DATA (STM_MODE_ANALOG , GPIO_NOPULL , 0 ));
@@ -1232,12 +1238,14 @@ void I2C1_EV_IRQHandler(void)
1232
1238
{
1233
1239
I2C_HandleTypeDef * handle = i2c_handles [I2C1_INDEX ];
1234
1240
HAL_I2C_EV_IRQHandler (handle );
1235
- #if defined(STM32C0xx ) || defined(STM32F0xx ) || defined(STM32G0xx ) || defined(STM32L0xx )
1241
+ #if defined(STM32C0xx ) || defined(STM32F0xx ) || defined(STM32G0xx ) || \
1242
+ defined(STM32L0xx ) || defined(STM32U0xx )
1236
1243
HAL_I2C_ER_IRQHandler (handle );
1237
- #endif /* STM32C0xx || STM32F0xx || STM32G0xx || STM32L0xx */
1244
+ #endif /* STM32C0xx || STM32F0xx || STM32G0xx || STM32L0xx || STM32U0xx */
1238
1245
}
1239
1246
1240
- #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
1247
+ #if !defined(STM32C0xx ) && !defined(STM32F0xx ) && !defined(STM32G0xx ) && \
1248
+ !defined(STM32L0xx ) && !defined(STM32U0xx )
1241
1249
/**
1242
1250
* @brief This function handles I2C1 interrupt.
1243
1251
* @param None
@@ -1248,7 +1256,7 @@ void I2C1_ER_IRQHandler(void)
1248
1256
I2C_HandleTypeDef * handle = i2c_handles [I2C1_INDEX ];
1249
1257
HAL_I2C_ER_IRQHandler (handle );
1250
1258
}
1251
- #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx */
1259
+ #endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
1252
1260
#endif // I2C1_BASE
1253
1261
1254
1262
#if defined(I2C2_BASE )
@@ -1259,7 +1267,7 @@ void I2C1_ER_IRQHandler(void)
1259
1267
*/
1260
1268
void I2C2_EV_IRQHandler (void )
1261
1269
{
1262
- #if defined(I2C3_BASE ) && defined(STM32G0xx )
1270
+ #if defined(I2C3_BASE ) && ( defined(STM32G0xx ) || defined( STM32U0xx ) )
1263
1271
/* I2C2_3_IRQHandler */
1264
1272
I2C_HandleTypeDef * handle2 = i2c_handles [I2C2_INDEX ];
1265
1273
I2C_HandleTypeDef * handle3 = i2c_handles [I2C3_INDEX ];
@@ -1271,16 +1279,26 @@ void I2C2_EV_IRQHandler(void)
1271
1279
HAL_I2C_EV_IRQHandler (handle3 );
1272
1280
HAL_I2C_ER_IRQHandler (handle3 );
1273
1281
}
1282
+ #if defined(I2C4_BASE )
1283
+ /* I2C2_3_4_IRQHandler */
1284
+ I2C_HandleTypeDef * handle4 = i2c_handles [I2C4_INDEX ];
1285
+ if (handle4 ) {
1286
+ HAL_I2C_EV_IRQHandler (handle4 );
1287
+ HAL_I2C_ER_IRQHandler (handle4 );
1288
+ }
1289
+ #endif /* I2C4_BASE */
1274
1290
#else
1275
1291
I2C_HandleTypeDef * handle = i2c_handles [I2C2_INDEX ];
1276
1292
HAL_I2C_EV_IRQHandler (handle );
1277
- #if defined(STM32F0xx ) || defined(STM32G0xx ) || defined(STM32L0xx )
1293
+ #if defined(STM32F0xx ) || defined(STM32G0xx ) || defined(STM32L0xx ) || \
1294
+ defined(STM32U0xx )
1278
1295
HAL_I2C_ER_IRQHandler (handle );
1279
- #endif /* STM32F0xx || STM32G0xx || STM32L0xx */
1296
+ #endif /* STM32F0xx || STM32G0xx || STM32L0xx || STM32U0xx */
1280
1297
#endif
1281
1298
}
1282
1299
1283
- #if !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx )
1300
+ #if !defined(STM32F0xx ) && !defined(STM32G0xx ) && !defined(STM32L0xx ) && \
1301
+ !defined(STM32U0xx )
1284
1302
/**
1285
1303
* @brief This function handles I2C2 interrupt.
1286
1304
* @param None
@@ -1291,10 +1309,10 @@ void I2C2_ER_IRQHandler(void)
1291
1309
I2C_HandleTypeDef * handle = i2c_handles [I2C2_INDEX ];
1292
1310
HAL_I2C_ER_IRQHandler (handle );
1293
1311
}
1294
- #endif /* !STM32F0xx && !STM32G0xx && !STM32L0xx */
1312
+ #endif /* !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
1295
1313
#endif // I2C2_BASE
1296
1314
1297
- #if defined(I2C3_BASE ) && !defined(STM32G0xx )
1315
+ #if defined(I2C3_BASE ) && !defined(STM32G0xx ) && !defined( STM32U0xx )
1298
1316
/**
1299
1317
* @brief This function handles I2C3 interrupt.
1300
1318
* @param None
@@ -1321,9 +1339,9 @@ void I2C3_ER_IRQHandler(void)
1321
1339
HAL_I2C_ER_IRQHandler (handle );
1322
1340
}
1323
1341
#endif /* !STM32L0xx */
1324
- #endif /* I2C3_BASE && ! STM32G0xx */
1342
+ #endif /* I2C3_BASE && ! STM32G0xx && !STM32U0xx */
1325
1343
1326
- #if defined(I2C4_BASE )
1344
+ #if defined(I2C4_BASE ) && !defined( STM32U0xx )
1327
1345
/**
1328
1346
* @brief This function handles I2C4 interrupt.
1329
1347
* @param None
@@ -1346,7 +1364,7 @@ void I2C4_ER_IRQHandler(void)
1346
1364
I2C_HandleTypeDef * handle = i2c_handles [I2C4_INDEX ];
1347
1365
HAL_I2C_ER_IRQHandler (handle );
1348
1366
}
1349
- #endif // I2C4_BASE
1367
+ #endif // I2C4_BASE && !STM32U0xx
1350
1368
1351
1369
#if defined(I2C5_BASE )
1352
1370
/**
0 commit comments