野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10336|回复: 4

32运行过快导致IIC Check和FLAG_SB不起作用

[复制链接]
发表于 2018-6-26 21:13:37 | 显示全部楼层 |阅读模式
void EEPROM_Wait()
{
        do
{
        I2C_GenerateSTART(EEPROM_IIC,ENABLE);
       
        //while(I2C_CheckEvent(EEPROM_IIC,I2C_EVENT_MASTER_MODE_SELECT)==ERROR);
        while( I2C_GetFlagStatus(EEPROM_IIC,I2C_FLAG_SB)==RESET);
         I2C_Send7bitAddress(EEPROM_IIC,EEPROM_ARRD,I2C_Direction_Transmitter);
}       
        //while(I2C_CheckEvent(EEPROM_IIC,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED )==ERROR);
while( I2C_GetFlagStatus(EEPROM_IIC,I2C_FLAG_ADDR)==RESET);

        I2C_GenerateSTOP(EEPROM_IIC,ENABLE);
}


两段while是被注释的,视频中说是32运行过快,但为啥我改成了FLAG,还是调试不出来,一步步调试时,还是在这一步卡死了,怎么改

附说明:EEPROM_IIC就是I2C1
回复

使用道具 举报

发表于 2018-6-27 08:34:18 | 显示全部楼层
分步调试一下
回复 支持 反对

使用道具 举报

发表于 2018-6-27 08:40:35 | 显示全部楼层
直接按例程的方式来写
回复 支持 反对

使用道具 举报

发表于 2018-6-27 15:22:58 | 显示全部楼层
在检查 SB 位后  写个printf  来检查是否执行OK
回复 支持 反对

使用道具 举报

发表于 2018-6-27 15:24:20 | 显示全部楼层
然后 打断点  点一直执行  就会跳过去的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 08:03 , Processed in 0.035851 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表