marject 发表于 2013-6-9 09:47:34

flash擦除的代码

/****************************************************************************
*
*名    称: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擦除的代码怎么理解呢?哪位朋友给解释一下吧!

steaven2000 发表于 2013-6-27 16:05:48

给你解释什么?
是字母数字不认识还是语法不懂?
如果都不是那就是逻辑的问题,人家芯片都是这样设计的你要什么解释?好好看看datasheet。
页: [1]
查看完整版本: flash擦除的代码