请教各位对stm8比较熟的朋友,我在一个小项目里面用了模拟I2C,因为模块I2C通讯老有问题,模拟I2C通讯很稳定。然后需要使能一个定时器中断,未使能中断之前I2C通讯很正常,一使能中断,模拟I2C的操作读SDA数据和拉低SDA给一个ACK信号就会疯狂产生EXTI0_IRQHandler中断,导致程序无法正常运行。我并没有使能I2C的两根线的中断。即便把定时器关掉,什么中断都不开,只要调用enableInterrupts();使能总中断,模拟I2C的正常读写操作就会产生中断。感觉很怪啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个问题我规避掉了,模拟I2C的方式在设置SDA为输入读数据和产生一个ACK(即拉低SDA)的时候在使能中断的情况下就会疯狂产生exti0的中断;不知道是不是芯片的问题。
总之,我现在是使用了库来规避了这个问题,现在系统正常了。
一周热门 更多>