MSP430单片机Flash的存储问题!
MSP430F5438A有256K的flash,前面60K是用作程序存储器,后面空着的部分我是不是可以用来存储数据?还有请高手给点建议,flash是段擦除的,怎样存储方便删除也方便查询? 回复【楼主位】594832359-----------------------------------------------------------------------
可以用来存储数据。可以在设备关机的时候,将你要保存的数据写入FLASH,设备在运行时,让这些数据在RAM中。这样可以不用频繁去读写FLASH。FLASH擦除有次数限制。 void ReadFlash(U16 wAddr,U8 *bBuf,U8 bLen)
{
while (bLen--)
*bBuf++=*(U8 *)wAddr++;
return;
}
void WriteFlash(U16 wAddr,U8 *bBuf,U8 bLen)
{
U8 reg1,reg2;
reg1=_BIC_SR(GIE);
reg2=IE1;IE1=0;
while (bLen--) {
while (FCTL3&BUSY);
FCTL3 = FWKEY;
FCTL1 =FWKEY+WRT;
*(U8 *)wAddr++=*bBuf
while(FCTL3&BUSY);
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK;
}
if(reg1&GIE) _BIS_SR(GIE);
IE1=reg2;
return;
}
void EraseSectorFlash(U16 wAddr)
{
U8 reg1,reg2;
reg1=_BIC_SR(GIE);
reg2=IE1;
IE1=0;
while(FCTL3&BUSY);
FCTL3 = FWKEY;
FCTL1 = FWKEY+ERASE;
*(U8 *)wAddr=0;
while(FCTL3&BUSY);
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK;
if(reg1&GIE) _BIS_SR(GIE);
IE1=reg2;
return;
} 回复【1楼】wuzhpo
-----------------------------------------------------------------------
好主意,我也是这么打算的,在RAM里面开辟数组空间,把一些数据读出来。 回复【2楼】gxxxw
-----------------------------------------------------------------------
这貌似是读、写和擦除程序,谢了~
页:
[1]