最近用STM32片上的Flash存东西,但是发现一个问题,程序如下:
FLASH_Status status = FLASH_COMPLETE;
FlashAddress=WRITE_START_ADDR;
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
status=FLASH_ErasePage(FlashAddress);
for(i=0;i<8;i++)
{
FlashBuffer_union.datafloat=ADC_Offset;
status=FLASH_ProgramWord(FlashAddress,FlashBuffer_union.datalongint);
FlashAddress+=4;
}
FlashAddress-=4;
for(i=0;i<8;i++)
{
FlashBuffer_int=(uint16_t)(ChannelStatus);
status=FLASH_ProgramHalfWord(FlashAddress,FlashBuffer_int);
FlashAddress+=2;
}
FLASH_Lock();
当我将FlashAddress-=4;加入程序后,就会出现写错误如下图
而我将FlashAddress-=4;去掉后就可以写入成功。如图
,请问各位这个是什么原因?实在是想不通····· |