FLASH块写入

来源:互联网 发布:测fps软件 编辑:程序博客网 时间:2024/05/22 06:13

#include "msp430x44x.h"
unsigned char  value[128];
void Block_write(unsigned char *value);
void main( void )
{
  unsigned char count;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  FCTL2 = FWKEY + FSSEL0 + FN0;
  //value = 0;
  for(count=0;count<128;count ++)
  {
    value[count]=count;
  }
  while(1)
  {
    Block_write(value);
  }
}

void Block_write(unsigned char *value)
{
  unsigned char *Flash_ptr=(unsigned char *)0x1080;                // Flash pointer
  unsigned char i,j,k=0;
  FCTL1 = FWKEY + WRT + BLKWRT;
  FCTL3 = FWKEY;//清除锁定
  _DINT();//Flash期间不允许中断,否则将出现不可预料的错误
  for(j=0;j<2;j++)//由于infoA段大小事128字节,包含两个块(64字节一个块),所以分两次写入
  {
    for(i=0;i<64;i++)
    {
 //     *(Flash_ptr++)= value[k++];
      *(Flash_ptr++)= value[k++];
      while(FCTL3&WAIT);//等待字节写操作完成
    }
    while(FCTL3 & BUSY);
  }
  _EINT();
  FCTL1 = FWKEY;  //Flash退出写操作
  FCTL3 = FWKEY +LOCK; //恢复Flash锁定。
}

原创粉丝点击