void Falsh_Erase(char *Addr)
{
while((FCTL3&BUSY) == BUSY);
FCTL1 = FWKEY+ERASE;
FCTL3 = FWKEY;
*Addr=0;
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK;
while((FCTL3&BUSY) == BUSY);
}
//向指定地址写一个字节
void Falsh_WriteB(char *Addr,uint8 nValue)
{
FCTL1 = FWKEY+WRT; // 允许写
FCTL3 = FWKEY; // 解锁
while((FCTL3&BUSY) == BUSY);
*Addr = nValue;
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK; // 锁定
while((FCTL3&BUSY) == BUSY);
}
// 读flash 指定地址的字节
uint8 Flash_ReadB(char *Addr)
{
uint8 RData;
RData = *Addr;
return RData;
}
这是我的代码,因为我要存储的数据正好256字节,要将ABCD四段全擦除,
Falsh_Erase((char *)0x1000);
Falsh_Erase((char *)0x1040);
Falsh_Erase((char *)0x1080);
Falsh_Erase((char *)0x10C0);//A段
但A段擦不掉啊!
|