oakpc 发表于 2009-3-18 18:28:42

MSP430读写FLASH的问题,掉电再读就全变成1

读写FLASH的问题,掉电再读就全变成1

#include <msp430x16x.h>

unsigned charwritebuff={0x01,0x02,0x04,0x08}; //用于存放被数组
unsigned char readbuff;

void erase_SegB(void);
void read_SegB(unsigned char *readbuff);
void write_SegB(unsigned char *writebuff);
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;                        //关闭看门狗
FCTL2 = FWKEY + FSSEL0 + FN0;

erase_SegB();               //掉电后,//注释此函数
write_SegB(writebuff);      //掉电后,//注释此函数重新下载程序,读出全是1
read_SegB(readbuff);
while(1);
}

void erase_SegB(void)
{
char *Flash_ptrB;                     

Flash_ptrB = (char *) 0x01080;
FCTL1 = FWKEY + ERASE ;                            //允许段擦除
FCTL3 = FWKEY ;
*Flash_ptrB = 0;                                    //擦除
}

void read_SegB(unsigned char *readbuff)
{
char *Flash_ptrB;
unsigned int i;

Flash_ptrB = (char *) 0x01080;

FCTL1 = FWKEY;   
FCTL3 = FWKEY;

for( i =0; i < 4; i++ )
{
    *readbuff++ = *Flash_ptrB++;
}
FCTL1 = FWKEY;                        
FCTL3 = FWKEY + LOCK;   
}

void write_SegB(unsigned char *writebuff)
{                     
char *Flash_ptrB;                     
unsigned int i;

Flash_ptrB = (char *) 0x01080;

FCTL1 = FWKEY + WRT;   
FCTL3 = FWKEY;

for( i =0; i < 4; i++ )
{
    *Flash_ptrB++ = *writebuff++;
}
FCTL1 = FWKEY;                        
FCTL3 = FWKEY + LOCK;   
}

第一次运行程序,可以写,可以读,读出来的结果跟写入的一样,修改程序后,只读,就全变成1,这究竟是怎么回事?程序错了吗?请前辈多多指教!谢谢!!!

xuanyusyj 发表于 2009-3-18 18:44:25

修改程序后,重新下载FW,flash被下载软件给擦除了

xuanyusyj 发表于 2009-3-18 18:46:42

IAR设置一下,download只更新main memory

oakpc 发表于 2009-3-18 20:04:16

多谢xuanyusyj的答案原来这么简单 竟然耽误了1天再次对xuanyusyj表示感谢

WSGHM 发表于 2009-8-17 12:15:57

请问download只更新main memory怎样设置,能给截个图吗?

FROG0007 发表于 2011-4-6 19:30:15

project--》option--》FET Debugger-->download.

liuhongyu 发表于 2011-11-29 21:41:03

mark
页: [1]
查看完整版本: MSP430读写FLASH的问题,掉电再读就全变成1