21ic问答首页 - 内部flash使用的一些问题
内部flash使用的一些问题
在使用cw32l010内部flash的时候在使用官方例程存储第128页时没有问题,保存了我的一些参数可以正常写入读取,但是在我仿照例程操作第127/126页的时候, Flag = FLASH_ErasePages(512*126, 512*126);这个函数会把我的ram中的存储参数结构体一部分参数置0,想请问是为什么铁部分代码
void errorsave()
{
uint8_t Flag;
uint8_t AddrBuf[256];
FLASH_UnlockPage(80);
Flag = CW_FLASH->ISR;
FLASH_UnlockPages(512*126, 512*126); //??127?
Flag = FLASH_ErasePages(512*126, 512*126); //???????
FLASH_LockAllPages();
if( Flag )
{
Data.LcuState =2; //????
}
//write
memcpy(AddrBuf,error_records,sizeof(ErrorRecord) * ComData.Attr.mData.recordnumber);
FLASH_UnlockPages( 512*126, 512*126 );
Flag = FLASH_WriteBytes(512*126, AddrBuf, 256 );
if( Flag )
{
Data.LcuState =2;
}
}
void errorsave()
{
uint8_t Flag;
uint8_t AddrBuf[256];
FLASH_UnlockPage(80);
Flag = CW_FLASH->ISR;
FLASH_UnlockPages(512*126, 512*126); //??127?
Flag = FLASH_ErasePages(512*126, 512*126); //???????
FLASH_LockAllPages();
if( Flag )
{
Data.LcuState =2; //????
}
//write
memcpy(AddrBuf,error_records,sizeof(ErrorRecord) * ComData.Attr.mData.recordnumber);
FLASH_UnlockPages( 512*126, 512*126 );
Flag = FLASH_WriteBytes(512*126, AddrBuf, 256 );
if( Flag )
{
Data.LcuState =2;
}
}
您需要登录后才可以回复 登录 | 注册