|
读写FLASH的问题,掉电再读就全变成1
#include <msp430x16x.h>
unsigned char writebuff[4]={0x01,0x02,0x04,0x08}; //用于存放被数组
unsigned char readbuff[4];
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,这究竟是怎么回事?程序错了吗?请前辈多多指教!谢谢!!! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|