Uint16 ChipErase(void)
{
Uint16 Data;
Uint32 TimeOut,i;
*(FlashStart + 0x5555) = 0xAAAA;
*(FlashStart + 0x2AAA) = 0x5555;
*(FlashStart + 0x5555) = 0x8080;
*(FlashStart + 0x5555) = 0xAAAA;
*(FlashStart + 0x2AAA) = 0x5555;
*(FlashStart + 0x5555) = 0x1010;
i = 0;
TimeOut = 0;
while(i<5)
{
Data = *(FlashStart + 0x3FFFF);
if (Data == 0xFFFF) i++;
else i=0;
if ( ++TimeOut>0x1000000) //0x1000000地址值1M容量
return (TimeOutErr);
}
for (i=0;i<0x40000;i++)
{
Data = *(FlashStart + i);
if (Data !=0xFFFF) return (EraseErr);
}
return (EraseOK);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
但如果这个代码某天运行速度变快(比如原来在FLASH中慢速运行,后来到RAM中高速运行),原来的值可能就不够用了。
就像当年DOS的游戏到P4高性能机器上面跑得太快一样。
最好有时基来参考,这样不管什么配置的电脑,只要性能够用,效果都差不多。
一周热门 更多>