- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-12-02 07:00:35
已绑定手机
新手上路
- 积分
- 21
|
这是我用官方例程修改后的代码,为什么串口两次输出的结果不一样呢,按理说写入后再读出数据应该是一样的啊。有没有哪位大神解答一下。128k内部eeprom。写入之前该区域已经擦除,0xE00地址前的数据都是正确的,就只有E00地址开始的53个字节有错,我每次写入128个字节。一共写入15978个字节,写入前,0x0000-0xC800已经擦除
int EEPROM_write_n(u32 EE_address,u8 *DataAddress,u16 number)
{
uint8_t flagh=0,buf[100];
int ret;
u8 i=0;
IAP_ENABLE(); //设置等待时间,允许IAP操作,送一次就够
IAP_WRITE(); //宏调用, 送字节写命令
//测试代码
if(EE_address==0XE00)
{
flagh=1;
PrintString2(DataAddress,number);//test
}
//测试代码end
do
{
IAP_ADDRE = (u8)(EE_address >> 16); //送地址高字节(地址需要改变时才需重新送地址)
IAP_ADDRH = (u8)(EE_address >> 8); //送地址中字节(地址需要改变时才需重新送地址)
IAP_ADDRL = (u8)EE_address; //送地址低字节(地址需要改变时才需重新送地址)
IAP_DATA = *DataAddress; //送数据到IAP_DATA,只有数据改变时才需重新送
EEPROM_Trig(); //触发EEPROM操作
EE_address++; //下一个地址
DataAddress++; //下一个数据
}while(--number); //直到结束
DisableEEPROM();
ret=memcmp(DataAddress,(uint8_t *)EE_address,number);
//测试代码
if(flagh==1)
{
for(i=0;i<100;i++)//3E6A
{
EEPROM_read_n(0xE00,buf,100);
}
PrintString2(buf,100);
}
//测试代码end
return ret;
}
|
|