void Flash_Write(void)
{
int16 *data_ptr;
uint16 *Flash_ptr;
uint8 i;
__disable_interrupt();
Flash_ptr = (uint16 *)Flash_default;
data_ptr = &product_info.vref_ad_zero;
if(FCTL3 & LOCK)
FCTL3 = FWKEY | LOCK; //信息段解锁
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY + ERASE; // Set Erase bit
*Flash_ptr = 0; // Dummy write to erase Flash segment
FCTL3 = FWKEY;
FCTL1 = FWKEY + WRT;
for (i = 0; i < CHECK_P_NUM; i++)
{
while((FCTL3 & BUSY) == BUSY); //Wait Busy
*Flash_ptr++ = *data_ptr++; // Write value to flash
}
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY | LOCK; // Set LOCKSEG bit
__enable_interrupt();
}这是我写的flash部分的代码,当运行到19行这里的时候,改位置的数据被擦除了,当运行到第29行时,已经将我需要写的数据写到了flash中,但是当我继续运行,当运行到32行,然后再点下一步运行的时候,然后芯片就直接卡死了,在仿真的时候,会导致IAR也卡死