可能的原因是I2C通信和串口使用了相同的中断向量或者优先级冲突了。您可以尝试以下几种方法来解决这个问题:
1. 调整中断优先级:根据数据表中的描述,I2C中断的优先级为3,串口中断的优先级为2。您可以尝试将I2C中断的优先级设置为低于2,或者将串口中断的优先级设置为高于3。
2. 关闭I2C中断:如果您不需要I2C通信时,可以考虑关闭I2C中断,并在需要使用时再打开。这样可以避免I2C中断和串口中断的冲突。
3. 使用DMA传输:如果您需要大量的数据传输,可以考虑使用DMA传输来代替中断传输。这样可以避免中断的竞争,并提高效率。
4. 增加延时:如果您的程序在I2C通信和串口中断之间频繁切换,可以考虑增加一些延时,让两个中断有足够的时间执行完成。
可能的原因是I2C通信和串口使用了相同的中断向量或者优先级冲突了。您可以尝试以下几种方法来解决这个问题:
1. 调整中断优先级:根据数据表中的描述,I2C中断的优先级为3,串口中断的优先级为2。您可以尝试将I2C中断的优先级设置为低于2,或者将串口中断的优先级设置为高于3。
2. 关闭I2C中断:如果您不需要I2C通信时,可以考虑关闭I2C中断,并在需要使用时再打开。这样可以避免I2C中断和串口中断的冲突。
3. 使用DMA传输:如果您需要大量的数据传输,可以考虑使用DMA传输来代替中断传输。这样可以避免中断的竞争,并提高效率。
4. 增加延时:如果您的程序在I2C通信和串口中断之间频繁切换,可以考虑增加一些延时,让两个中断有足够的时间执行完成。
举报