我是新手小白,主要是刚接触这类单片机,下面的函数主要是模仿调用EEPORM的函数写的,进行调试的时候,运行到前几步就停止运行了,不知道原因是啥!有没有大佬指导一下!
#define OLED_ADD 0X78
#define OLED_CMD 0
#define OLED_DATA 1
void OLED_WR_Byte(u8 data, u8 mode)
{
int8_t i8;
do
{
i8 = 0;
I2C_START(I2C0);
I2C_WAIT_READY(I2C0);
if(I2C_GET_STATUS(I2C0) == 0x08)
{
I2C_SET_DATA(I2C0,OLED_ADD);
I2C_SET_CONTROL_REG(I2C0, I2C_I2CON_SI);
I2C_WAIT_READY(I2C0);
if(mode)
I2C_SET_DATA(I2C0,0x40);
else
I2C_SET_DATA(I2C0,0x00);
if(I2C_GET_STATUS(I2C0) == 0x18)
{
I2C_SET_DATA(I2C0, data);
I2C_SET_CONTROL_REG(I2C0, I2C_I2CON_SI);
I2C_WAIT_READY(I2C0);
if(I2C_GET_STATUS(I2C0) == 0x28)
{
I2C_SET_CONTROL_REG(I2C0, I2C_I2CON_STO | I2C_I2CON_SI);
}
else
{
i8 = 3;//发送数据错误
}
}
else
{
i8 = 2;//发送地址错误
}
}
else
{
i8 = 1;//发送控制位错误
}
if(i8)
{
I2C_SET_CONTROL_REG(I2C0, I2C_I2CON_STO | I2C_I2CON_SI);
CLK_SysTickDelay(100);
}
}
while(i8);
} |