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,这究竟是怎么回事?程序错了吗?请前辈多多指教!谢谢!!! 修改程序后,重新下载FW,flash被下载软件给擦除了 IAR设置一下,download只更新main memory 多谢xuanyusyj的答案原来这么简单 竟然耽误了1天再次对xuanyusyj表示感谢 请问download只更新main memory怎样设置,能给截个图吗? project--》option--》FET Debugger-->download. mark
页:
[1]