void FlashSectorErase(Uint32 SectorNum)
{
FLASH_EraseSector(SectorNum,VoltageRange_3);
}
void FlashPageWrite(Uint32 SectorNum,Uint32 *SourceBuf,Uint32 Len)
{
Uint32 Cnt = 0;
__disable_irq();
FLASH_Unlock();
FlashSectorErase(SectorNum<<3);
for(Cnt = 0;Cnt < Len;Cnt++)
{
FLASH_ProgramWord(FlashAddressTab[SectorNum]+Cnt*4,*(SourceBuf+Cnt)); //
if(*(Uint32 *)(FlashAddressTab[SectorNum]+Cnt*4) != *(SourceBuf+Cnt)) //
{
break;
}
}
FLASH_Lock();
__enable_irq();
}
void FlashPageRead(Uint32 SectorNum,Uint32 *DestBuf,Uint32 Len)
{
Uint32 Cnt = 0;
Uint32 *SourceAddr=(Uint32 *)FlashAddressTab[SectorNum];
for(Cnt=0;Cnt<Len;Cnt++)
{
*(DestBuf+Cnt)=*(SourceAddr+Cnt);
}
}
|