最近在IIC-EEPROM的代码发现
void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)
各种判断太多了,我就重新自己写了实现方式。代码如下
u8 CanWriteDataNum = 0;
u8 RealNum = 0;
while( NumByteToWrite > 0 ) //还有数据要写入
{
CanWriteDataNum = I2C_PageSize - WriteAddr%I2C_PageSize;; //计算待写入可写入数据量
RealNum = (NumByteToWrite <= CanWriteDataNum) ? NumByteToWrite : CanWriteDataNum; //获取实际可写入数据量
I2C_EE_PageWrite(pBuffer, WriteAddr, RealNum); //调用写入函数
I2C_EE_WaitEepromStandbyState(); //等待写入完成
NumByteToWrite -= RealNum; //减去已写入数据数量
WriteAddr += RealNum; //计算新的地址
pBuffer += RealNum;
}
已经测试通过。 代码的思路是以当前页可写入数据的数量为基准。
有什么问题还请各位大侠指正! |