594832359 发表于 2012-3-7 20:19:55

MSP430单片机Flash的存储问题!

MSP430F5438A有256K的flash,前面60K是用作程序存储器,后面空着的部分我是不是可以用来存储数据?还有请高手给点建议,flash是段擦除的,怎样存储方便删除也方便查询?

wuzhpo 发表于 2012-3-7 21:43:30

回复【楼主位】594832359
-----------------------------------------------------------------------

可以用来存储数据。可以在设备关机的时候,将你要保存的数据写入FLASH,设备在运行时,让这些数据在RAM中。这样可以不用频繁去读写FLASH。FLASH擦除有次数限制。

gxxxw 发表于 2012-3-8 10:00:45

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;
}

594832359 发表于 2012-3-9 14:23:35

回复【1楼】wuzhpo
-----------------------------------------------------------------------

好主意,我也是这么打算的,在RAM里面开辟数组空间,把一些数据读出来。

594832359 发表于 2012-3-9 14:24:48

回复【2楼】gxxxw
-----------------------------------------------------------------------

这貌似是读、写和擦除程序,谢了~
页: [1]
查看完整版本: MSP430单片机Flash的存储问题!