打印

STM32 硬件IIC出错

[复制链接]
3805|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qbwan1|  楼主 | 2008-11-3 18:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    各位好!本人搞51有了几年,搞STM32才刚起步。在做Keil开发平台(v3.23a)上的例程:M24C08_EEPROM,即硬件IIC读写程序,我在主程序中运行如下程序:
for(i=0;i<10;i++){
  I2C_EE_ByteWrite(Tx1_Buffer+i, EEPROM_WriteAddress1+i);
  I2C_EE_BufferRead(Rx1_Buffer+i, EEPROM_ReadAddress1+i, 1);
}
IIC设定照原样,不改变,IIC芯片是AT24C02N。当在上述2个函数的最后一行设断点时,程序能顺利运行到最后,可不设断点全速运行时,程序就会在下述写函数的while语句上死循环:
void I2C_EE_BufferRead(u8* pBuffer,u8 ReadAddr,u16 NumByteToRead){
  u16 i;
  I2C_AcknowledgeConfig(I2C1, ENABLE);
  I2C_GenerateSTART(I2C1, ENABLE);
  /* Test on EV5 and clear it */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
  ......
}
当出现死循环运行时,如果此时在while语句上设断点(用ULINK2仿真),此时暂停运行,再当步运行,程序就能通过些while语句,不知为什么在全速运行时检测不到条件0x00030001,而在单步运行时就能检测得到。是否有同行也遇到过相同问题?是否有解决的办法?电路肯定没问题,我用模拟IIC程序在其上运行,没问题。
沙发
tmfwt| | 2011-7-25 11:55 | 只看该作者
我调试也遇见这种问题,不过重启可以跳出,数据读写有问题!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝