Skip to content

Commit 77b1284

Browse files
committed
fix set
1 parent 4470b1c commit 77b1284

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

bsp/gd32/arm/libraries/gd32_drivers/drv_hw_i2c.c

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,27 @@ static void gd32_i2c_err_irq_handler(struct gd32_i2c *i2c_obj)
165165

166166

167167
#ifdef BSP_USING_HW_I2C0
168-
void I2C0_EV_IRQHandler(void) { rt_interrupt_enter(); gd32_i2c_irq_handler(&i2c_objs[0]); rt_interrupt_leave(); }
169-
void I2C0_ER_IRQHandler(void) { rt_interrupt_enter(); gd32_i2c_err_irq_handler(&i2c_objs[0]); rt_interrupt_leave(); }
168+
void I2C0_EV_IRQHandler(void) {
169+
rt_interrupt_enter();
170+
gd32_i2c_irq_handler(&i2c_objs[0]);
171+
rt_interrupt_leave();
172+
}
173+
void I2C0_ER_IRQHandler(void) {
174+
rt_interrupt_enter();
175+
gd32_i2c_err_irq_handler(&i2c_objs[0]);
176+
rt_interrupt_leave();
177+
}
170178
#endif
171179
#ifdef BSP_USING_HW_I2C1
172-
void I2C1_EV_IRQHandler(void) { rt_interrupt_enter(); gd32_i2c_irq_handler(&i2c_objs[1]); rt_interrupt_leave(); }
173-
void I2C1_ER_IRQHandler(void) { rt_interrupt_enter(); gd32_i2c_err_irq_handler(&i2c_objs[1]); rt_interrupt_leave(); }
180+
void I2C1_EV_IRQHandler(void) {
181+
rt_interrupt_enter();
182+
gd32_i2c_irq_handler(&i2c_objs[0]);
183+
rt_interrupt_leave();
184+
}
185+
void I2C1_ER_IRQHandler(void) {
186+
rt_interrupt_enter();
187+
gd32_i2c_err_irq_handler(&i2c_objs[0]);
188+
rt_interrupt_leave(); }
174189
#endif
175190

176191

@@ -218,15 +233,19 @@ static rt_ssize_t gd32_i2c_master_xfer(struct rt_i2c_bus_device *bus, struct rt_
218233
}
219234

220235
/* Enable interrupts */
221-
i2c_interrupt_enable(i2c_periph, I2C_INT_EV | I2C_INT_BUF | I2C_INT_ERR);
236+
i2c_interrupt_enable(i2c_periph, I2C_INT_EV);
237+
i2c_interrupt_enable(i2c_periph, I2C_INT_BUF);
238+
i2c_interrupt_enable(i2c_periph, I2C_INT_ERR);
222239
/* Generate start condition */
223240
i2c_start_on_bus(i2c_periph);
224241

225242
/* Wait for transfer completion or timeout */
226243
ret = rt_completion_wait(&i2c_obj->completion, bus->timeout);
227244

228245
/* Disable interrupts after transfer is done or timed out */
229-
i2c_interrupt_disable(i2c_periph, I2C_INT_EV | I2C_INT_BUF | I2C_INT_ERR);
246+
i2c_interrupt_disable(i2c_periph, I2C_INT_EV);
247+
i2c_interrupt_disable(i2c_periph, I2C_INT_BUF);
248+
i2c_interrupt_disable(i2c_periph, I2C_INT_ERR);
230249

231250
/* Restore ACK and ACKPOS to default state for next transfer */
232251
i2c_ack_config(i2c_periph, I2C_ACK_ENABLE);

0 commit comments

Comments
 (0)