标题: 求救MSP430F169的flash的读写程序 [打印本页]

作者: hzejian    时间: 2015-3-31 15:34
标题: 求救MSP430F169的flash的读写程序
MSP430F169的flash的读写程序如下


void Flash_clr(int *ptr)
{
while ((FCTL3 & BUSY)!=0){};//先判忙
FCTL3 = FWKEY;             //Lock = 0  ,FCTL3 =0X0A500
FCTL1 = FWKEY+ERASE;              //Erase = 1 ,FCTL1 = 0X0A502
*ptr = 0;          /* Erase flash segment */
  //_EINT();  //因为擦除时间较长,为不影响主程序时钟中断
while ((FCTL3 & BUSY)!=0);
}
void Flash_wb(char*dataptr,char byte)
{
FCTL3 = FWKEY;             //Lock = 0  ,FCTL3 =0X0A500
FCTL1 = FWKEY+WRT;             // WRT = 1 ,FCTL1 = 0X0A540
*dataptr=byte;               //字节写入
}
请问下高手红色字体的字母表示什么?在线等~


作者: hzejian    时间: 2015-3-31 16:29
自查到 谢啦 大家~
作者: admin    时间: 2015-3-31 17:24
红色字母的意思分享一下吗。
作者: mqwu    时间: 2015-4-1 17:56
Flash Memory 控制寄存器3的Lock 位的清零,Flash Memory 控制寄存器1的擦出位置位将本单独指定的Segment擦出, 楼主写的顺序写反了, 通常的顺序是下面这样的, 对SegmentA先擦出后写;
void write_SegA (uchar value)
{
  char *Flash_ptr;                          // Flash Memory的地址指针
  unsigned int i;

  Flash_ptr = (char *) 0x1080;              // 初始化地址指针;
  FCTL1 = FWKEY + ERASE;                    // 将擦出位置位;
  FCTL3 = FWKEY;                            // 清零Lock位;
  *Flash_ptr = 0;                           // 写0 到这个Segment的所有内存;

  FCTL1 = FWKEY + WRT;                      // 将写操作置位;

  for (i=0; i<128; i++)
  {
    *Flash_ptr++ = value;                   // 写某一值到这个flash,一直到这个数据写完所有的地址单元为止,指针地址自动加1;
  }

  FCTL1 = FWKEY;                            // 清零写位, Disable 写使能;
  FCTL3 = FWKEY + LOCK;                     // 上锁;
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1