请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430I2040 大家好、
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();
}
下面是闪存部分的代码、更改后的数据在运行到19行时被擦除。 当运行到第29行时、将被写入闪存的数据已经被写入。 但是、当继续运行到32行、然后单击下一步时、芯片会直接卡住。 仿真时、IAR 也会卡住。
写入的地址为0xFC00、客户代码的这一部分没有被占用。
您能否帮助检查原因是什么? 谢谢。
此致、
樱桃