⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 对于MSP430F1611内部FLASH的擦写.通过调试.并完全正确!
💻 C
字号:
/* MSP430F1611 Flash块大小是512字节, 0xFFFFH--0XFE00H是16位,8位中断向量表外,
 0xFDFFH--0XFC00H  Seg1  0XFBFFH--0XFA00H  Seg1  0XF9FFH--0xF800H    Seg1 
以此类推直到0x4000h 一共可以分为95个段 
信息段A 0x10FF-0x1080h  信息段B  0x107fh-0x1000h   每个段128字节
*/

#include<MSP430x16x.h>
//#define FSEG_A   0x1080h    //Information Seg1  Start
//#define FSEG_B   0x1000h    //Information Seg2  Start
//#define FSEG1    0XFC00H    //Seg 1 Start
//#define FSEG2    0XFA00H    //Seg 2 Start
//#define FSEG3    0XF900H    //Seg 3 Start
//#define FSEG4    0XF700H    //Seg 4 Start
//#define FSEG5    0XF500H    //Seg 5 Start
//#define FSEG6    0XF300H    //Seg 6 Start
//#define FSEG7    0XF100H    //Seg 7 Start
//#define FSEG8    0XEE00H    //Seg 8 Start
//#define FSEG9    0XEC00H    //Seg 9 Start
//#define FSEG10   0XEA00H    //Seg 10 Start
//#define FSEG11   0XE900H    //Seg 11 Start
//#define FSEG12   0XE700H    //Seg 12 Start
//
//最大段数据为95     //参考MSP430F1611IPM英文手册P14
//
//RAM 区 10K 地址区间是:0x38ffh--0x1100
//整个ARM区间分 Extended 8k 与 Mirrored 2K
//0x38ffh--0x1900h
//0x18ffh--0x1100h

/*  说明;
在综全程序中将会使用FSEGxx--FSEGxx将指针指向相应的段空间
来用字或者字节形式读写
*/
unsigned char data[512];
void Init_Flash(void)
{
 FCTL3=FWKEY;
 FCTL1=FWKEY+ERASE;
 while((FCTL3&BUSY)!=0) {};
}
/* 字节擦写    */
void Flash_Wb_Write(char *PtData,char *Bdata)
{
  unsigned int i;
  FCTL3=FWKEY;
  FCTL1=FWKEY+WRT;
  for(i=0;i<512;i++)
  {
    *PtData++ = *Bdata++;
  }
  return;
}
/* 字擦写    */
void Flash_Ww_Write(char *PtData,char *Bdata)
{
  unsigned int i;
  FCTL3=FWKEY;
  FCTL1=FWKEY+WRT;
  for(i=0;i<256;i++)     
  {
    *(PtData+i) = *Bdata++;
  }
}

void main(void)
{
  unsigned int i;
  
  WDTCTL=WDTPW+WDTHOLD;
  for(i=0;i<512;i++)
  data[i]=i;
  Init_Flash();
  Flash_Wb_Write((char *)0xb000,data);
  Flash_Ww_Write((char *)0xb200,data);
  while(1){ };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -