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

📄 读写flash.txt

📁 msp430系列单片机,flash读写程序
💻 TXT
字号:
【MSP430读写擦除FLASH程序】
程序转载:天涯过客 发表日期:2005.10.28.  后期整理:DC /2006.1./www.microcontrol.cn 
 
1-简介
    MSP430单片机对片内FLASH的读写操作程序范例。

2-程序例程
//******************************************************************************

// 参数: 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; 
} 

//******************************************************************************
//例程结速 
 

⌨️ 快捷键说明

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