MSP430单片机对片内FLASH的读写操作程序范例

发布时间:2018-07-01 21:50:12   来源:文档文库   
字号:

MSP430单片机对片内FLASH的读写操作程序范例  

// 参数: wAddr 为地址 , 范围 0x1000~0xFFFF

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;                  // 保护原来中断标志,并关闭有关中断。

  

    // 写一个字节数据到指定flash地址

    while (bLen--)

      {

      while (FCTL3&BUSY);             // 等待以前FLASH操作完成

      FCTL3 = FWKEY;    

      FCTL1 =FWKEY+WRT;               // 发送写flash命令

      *(U8 *)wAddr++=*bBuf            // 写数据到指定的flash地址

      while(FCTL3&BUSY);              // 等待写操作完成

      FCTL1 = FWKEY;     

      FCTL3 = FWKEY+LOCK;             // FLASH内容进行加锁保护

    }

     if(reg1&GIE) _BIS_SR(GIE);       // 恢复中断标志

         IE1=reg2;         

    return;

}

void EraseSectorFlash(U16 wAddr)

{

    U8 reg1,reg2;

    reg1=_BIC_SR(GIE);

    reg2=IE1;                        // 保护有关中断标志

    IE1=0;                           // 关闭IE1中断

    while(FCTL3&BUSY);               // 等待FLASH编程结束

    FCTL3 = FWKEY;                   // 为了准备编程而初始化FLASH控制寄存器3

    FCTL1 = FWKEY+ERASE;             // 发送FLASH擦除命令

    *(U8 *)wAddr=0;                  // 启动擦除操作

    while(FCTL3&BUSY);               // 等待擦除操作完成

     FCTL1 = FWKEY;                  // 撤销任何对FLASH的操作命令

      FCTL3 = FWKEY+LOCK;             // FLASH内容进行加锁保护

    if(reg1&GIE) _BIS_SR(GIE);       // 恢复中断标志

         IE1=reg2;

      

     return;

}

本文来源:https://www.2haoxitong.net/k/doc/9b68ba2db90d6c85ec3ac693.html

《MSP430单片机对片内FLASH的读写操作程序范例.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式