|
/****************************************************************************
*
*名 称:BlockErase
*
*功 能:扇区擦除函数
*
*入口参数:Uint16 BlockNum
*
*出口参数:Uint16
*
****************************************************************************/
Uint16 BlockErase(Uint16 BlockNum)
{
Uint16 i,Data;
Uint32 TimeOut;
*(FlashStart + 0x5555) = 0xAA;
*(FlashStart + 0x2AAA) = 0x55;
*(FlashStart + 0x5555) = 0x80;
*(FlashStart + 0x5555) = 0xAA;
*(FlashStart + 0x2AAA) = 0x55;
*(FlashStart + BlockSize * BlockNum + 1) = 0x50;
i = 0;
TimeOut = 0;
while(i<5)
{
Data = *(FlashStart + BlockSize * (BlockNum +1));
if(Data == 0xFFFF)
{
i++;
}
else
{
i=0;
}
if ( ++TimeOut>0x1000000)
{
return (TimeOutErr);
}
}
for(i=0;i<SectorSize;i++)
{
Data = *(FlashStart + BlockSize * BlockNum +i);
if (Data !=0xFFFF)
{
return (EraseErr);
}
}
return (EraseOK);
}
这一段flash擦除的代码怎么理解呢?哪位朋友给解释一下吧! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|