This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

用LaunchPad对MSP43G2553的flash写入数据,掉电后读取的数据不对

        LaunchPad + MSP43G2553,Flash(Information Memory :Segment D【0x1000 - 0x107F】)

        通过串口和编程线,发送命令给MCU,MCU程序接到指令后处理。

        先擦除Segment D,然后把数据写入地址0x1000到0x1007。

        读取地址0x1000到0x1007,通过串口返回的数据显示数据已经写入Flash。

        拔掉LaunchPad的编程线,LaunchPad电源灯灭。

        插上LaunchPad的编程线,LaunchPad电源灯亮。

        通过串口和编程线发送读取命令,串口返回数据显示读取的数据发生了变化。

        请问这个过程中间那里有问题?

----------------------------------------------------------------------------------------------------------------------------

FLASH擦除

unsigned char *e_address;
e_address = (unsigned char *)0x1000;

while(FCTL3 & BUSY);

FCTL2 = FWKEY + FSSEL0 + FN4;
FCTL1 = FWKEY + ERASE;
FCTL3 = FWKEY;

*e_address = 0;

while(FCTL3 & BUSY);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;

----------------------------------------------------------------------------------------------------------------------------

FLASH写入

unsigned char *w_address;
w_address = (unsigned char *)0x1000; //可以是0x1001、0x1002到0x1007

while(FCTL3 & BUSY);

FCTL2 = FWKEY + FSSEL0 + FN4;
FCTL1 = FWKEY + WRT;
FCTL3 = FWKEY;

*w_address= F_WriteValue;

while(FCTL3 & BUSY);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;