aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/i2c.c7
-rw-r--r--ports/stm32/main.c7
2 files changed, 5 insertions, 9 deletions
diff --git a/ports/stm32/i2c.c b/ports/stm32/i2c.c
index 6cb6538cb..56c63684f 100644
--- a/ports/stm32/i2c.c
+++ b/ports/stm32/i2c.c
@@ -217,21 +217,18 @@ uint32_t i2c_get_baudrate(I2C_InitTypeDef *init) {
#endif
void i2c_init0(void) {
- // reset the I2C1 handles
+ // Initialise the I2C handles.
+ // The structs live on the BSS so all other fields will be zero after a reset.
#if defined(MICROPY_HW_I2C1_SCL)
- memset(&I2CHandle1, 0, sizeof(I2C_HandleTypeDef));
I2CHandle1.Instance = I2C1;
#endif
#if defined(MICROPY_HW_I2C2_SCL)
- memset(&I2CHandle2, 0, sizeof(I2C_HandleTypeDef));
I2CHandle2.Instance = I2C2;
#endif
#if defined(MICROPY_HW_I2C3_SCL)
- memset(&I2CHandle3, 0, sizeof(I2C_HandleTypeDef));
I2CHandle3.Instance = I2C3;
#endif
#if defined(MICROPY_HW_I2C4_SCL)
- memset(&I2CHandle4, 0, sizeof(I2C_HandleTypeDef));
I2CHandle4.Instance = I2C4;
#endif
}
diff --git a/ports/stm32/main.c b/ports/stm32/main.c
index 7a530ff83..5617747e9 100644
--- a/ports/stm32/main.c
+++ b/ports/stm32/main.c
@@ -458,6 +458,9 @@ int main(void) {
switch_init0();
#endif
spi_init0();
+ #if MICROPY_HW_ENABLE_HW_I2C
+ i2c_init0();
+ #endif
#if defined(USE_DEVICE_MODE)
// default to internal flash being the usb medium
@@ -553,10 +556,6 @@ soft_reset:
can_init0();
#endif
- #if MICROPY_HW_ENABLE_HW_I2C
- i2c_init0();
- #endif
-
pyb_usb_init0();
// Initialise the local flash filesystem.