大家好、我的工作正常、现在我在从0x1000到0x17FF 擦除闪存时遇到了问题。 当我运行下面的代码时、一旦我进入虚拟写入来启动擦除、程序就失去控制。 它看起来像是在不断复位或永远不会降落。 对正在发生的事情有什么想法? 我可以单步执行虚拟写入、但一旦我执行该行、它就会崩溃。
谢谢
//将正确的 BSL 代码写入1000-17FF
void Rewrite BSL (void)
{_DINT ();
静态无符号 int i、j;
静态 char * Flash_ptr;//初始化闪存指针
静态 char * Mem_ptrD;
Flash_ptr =(char *) 0x1000;
MEM_ptrD =(char *)&BSL_CODE;
for (j=0;j<4;j++)
{FCTL3 = FWKEY;//清除锁定位
FCTL1 = FWKEY | ERASE;//设置擦除位
*闪存_ptr = 0;//虚拟写入以擦除闪存段
FCTL1 = FWKEY |WRT;//为写入操作设置 WRT 位
延迟(100);
Flash_PTR+=0x200;//共4个段
}
Flash_ptr =(char *) 0x1000;
对于(I = 0;I < 0x800;I++)
{
*闪存_PTR++=*内存_ptrD++;//将值写入闪存
}
FCTL1 = FWKEY;//清除 WRT 位
FCTL3 = FWKEY | LOCK;//设置 LOCK 位
返回;
}