stm32 Flash 只写入一个字节,后面的都写不进去了。。
时间:10-02
整理:3721RD
点击:
void writeEEPROM(u32 addr)
{int n;
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(addr);
for(n=0;n<datanum;n++)
{
FLASH_ProgramHalfWord(addr+n*2, alldata[n]);
}
FLASH_Lock();
}
void readEEPROM()
{
int n;
u32 *addr;
addr=(u32*)PAGEADD;
for(n=0;n<datanum;n++)
{
alldata[n]=*addr;
addr+=2;
}
}
代码如上。
写了三个数进去,读回来第一个数是对的,后面都是65535
求大神解答啊,我请吃饭
{int n;
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(addr);
for(n=0;n<datanum;n++)
{
FLASH_ProgramHalfWord(addr+n*2, alldata[n]);
}
FLASH_Lock();
}
void readEEPROM()
{
int n;
u32 *addr;
addr=(u32*)PAGEADD;
for(n=0;n<datanum;n++)
{
alldata[n]=*addr;
addr+=2;
}
}
代码如上。
写了三个数进去,读回来第一个数是对的,后面都是65535
求大神解答啊,我请吃饭
自己顶......
原来是地址定义错误了,应该写半字是定义为 u16 *addr。所以它读到后面去了。
