@@ -141,9 +141,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
141141 // Enable I2C1 clock if not done
142142 if (obj -> i2c == I2C1 )
143143 {
144+ #if defined(CH32L10x ) || defined(CH32VM00X )
145+ RCC_PB1PeriphResetCmd (RCC_PB1Periph_I2C1 , ENABLE );
146+ RCC_PB1PeriphResetCmd (RCC_PB1Periph_I2C1 , DISABLE );
147+ RCC_PB1PeriphClockCmd (RCC_PB1Periph_I2C1 , ENABLE );
148+ #else
144149 RCC_APB1PeriphResetCmd (RCC_APB1Periph_I2C1 , ENABLE );
145150 RCC_APB1PeriphResetCmd (RCC_APB1Periph_I2C1 , DISABLE );
146151 RCC_APB1PeriphClockCmd (RCC_APB1Periph_I2C1 , ENABLE );
152+ #endif
147153
148154 obj -> irq = I2C1_EV_IRQn ;
149155 obj -> irqER = I2C1_ER_IRQn ;
@@ -154,9 +160,15 @@ void i2c_custom_init(i2c_t *obj, uint32_t timing, uint32_t addressingMode, uint3
154160 // Enable I2C2 clock if not done
155161 if (obj -> i2c == I2C2 )
156162 {
163+ #if defined(CH32L10x ) || defined(CH32VM00X )
164+ RCC_PB1PeriphResetCmd (RCC_PB1Periph_I2C2 , ENABLE );
165+ RCC_PB1PeriphResetCmd (RCC_PB1Periph_I2C2 , DISABLE );
166+ RCC_PB1PeriphClockCmd (RCC_PB1Periph_I2C2 , ENABLE );
167+ #else
157168 RCC_APB1PeriphResetCmd (RCC_APB1Periph_I2C2 , ENABLE );
158169 RCC_APB1PeriphResetCmd (RCC_APB1Periph_I2C2 , DISABLE );
159170 RCC_APB1PeriphClockCmd (RCC_APB1Periph_I2C2 , ENABLE );
171+ #endif
160172
161173 obj -> irq = I2C2_EV_IRQn ;
162174 obj -> irqER = I2C2_ER_IRQn ;
0 commit comments