Hi all.
this issue is random, I do not know the reason.
the mcu erase internal flash, it has a very low probability of crash.
please refer my code.
erase_NumberOfBank(0x10000,3);
P.S. code memory address 0x10000h - 03FFFFh unused.
void erase_NumberOfBank(unsigned long int start_address,unsigned char numberofbank)
{
unsigned long int *Flash_Ptr; // Flash pointer
unsigned int j;
// __disable_interrupt(); // 5xx Workaround: Disable global
// interrupt while erasing. Re-Enable
// GIE if needed
for (j=0;j<numberofbank;j++)
{
Flash_Ptr = (unsigned long int *)(start_address + 0x10000*j); // Initialize Flash pointer
//while(BUSY & FCTL3); // Check if Flash being used
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY + MERAS; // Set Erase bit
*Flash_Ptr = 0; // Dummy write to erase Flash segment
//while(BUSY & FCTL3); // Check if Erase is done
FCTL1 = FWKEY; // Clear Erase bit
FCTL3 = FWKEY + LOCK; // Reset LOCK bit
while(BUSY & FCTL3); // Check if Erase is done
}
// __enable_interrupt();
}
Thank you