STM32/STM8技术论坛
直播中

过去的点滴

9年用户 18经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 制造/封装 模拟技术 连接器 EMC/EMI设计 光电显示 存储技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU RF/无线
私信 关注
[问答]

在使用STM8S207RB单片机的I2C时,在写一个字节时一直循环while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT)),这个要怎么解决啊?

发送一个字节的程序如下:
void IIC_WriteByte(uint8_t dat,uint16_t Waddr,uint8_t EAddr)
{
    while(I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));
    I2C_GenerateSTART(ENABLE);
    while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
    I2C_Send7bitAddress(EAddr, I2C_DIRECtiON_TX);
    while (!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
    I2C_SendData(Waddr>>8);
    while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING));
    I2C_SendData(Waddr&0x00ff);
    while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTING));
    I2C_SendData(dat);
    while (!I2C_CheckEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED));
    I2C_GenerateSTOP(ENABLE);
}


其它的while 语句试过,除了while(I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));以外,其它while都在执行死循环,求各位大神指点,谢谢~

更多回帖

发帖
×
20
完善资料,
赚取积分