void FlashErase()
{
uchar *p0;
FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//选择时钟源,分频
FCTL3 = FWKEY;//清除LOCK
while(FCTL3 & BUSY);//如果出于忙,则等待
FCTL1 = FWKEY + ERASE;//使能段操作
p0 = (unsigned char *)0x1080;//数值强制转换成指针
*p0 = 0; //向段内任意地址写0,即空写入,启动擦除操作
FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;
while(FCTL3 & BUSY);
}
所有的资料上都说擦除最小单位是一段,并且擦除后是置1的。而我执行这段擦除代码,结果在memory窗口中观察,只有一个地址0x1080是被擦除了的,并且不是置1,而是变成了0,不理解。求各位帮我解决啊
此帖出自
小平头技术问答
一周热门 更多>