@@ -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