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

📄 flash.c

📁 是嵌入式处理器
💻 C
字号:
#include <mc9s12e64.h>     /* derivative information */
#define NOP {__asm NOP; }


void FlashWrite_ROM(byte *WriteData,word * address,byte page); 
void FlashWrite_RAM(byte *WriteData,word * address,byte page);

//一次擦除是256个word
//一个扇区为256个word
//写入的地址必须为偶地址
//WriteData--写入的数据
//address----写入的地址
//page-------页地址,不存在的页写入值0
//以下的为一个扇区的写入函数

#pragma CODE_SEG	PROGRAM_ROM
void FlashWrite_ROM(byte *WriteData,word * address,byte page) {  
  
  word len;
  if(page!=0) PPAGE=page;
  FCLKDIV_PRDIV8=0;  //直接使用晶体时钟 
  FCLKDIV_FDIV  =52; //分频后的时钟在150KHZ到200KHZ之间,还要满足运行时间要求
  FPROT       =0xFF; //打开所有的保护
  FSTAT_PVIOL   =1 ; //清除保护出错标志
  FSTAT_ACCERR  =1 ; //清除Flash访问错误发生标志
 
 //擦除操作 
  (*address) = 0x00A0; //随便写入一个数据,表示开始擦除
  FCMD	     = 0x40;   //帧擦除
  FSTAT_CBEIF= 1;      //清除该位
  while(!FSTAT_CCIF);
  
  //以下是开始写入
  for(len=0;len<256;len++) {
    
    while(!FSTAT_CBEIF);
    FSTAT_PVIOL   =1 ; //清除保护出错标志
    FSTAT_ACCERR  =1 ; //清除Flash访问错误发生标志
    *(address+len) = (*(WriteData+2*len))*256+*(WriteData+2*len+1); //随便写入一个数据,表示开始擦除
    FCMD	     = 0x20; //帧擦除
    FSTAT_CBEIF= 1;    //清除该位
    while(!FSTAT_CCIF);
  }  
  FPROT=0x00;		     //保护Flash块
}



#pragma CODE_SEG	PROGRAM_RAM
void FlashWrite_RAM(byte *WriteData,word * address,byte page) { 
   
  word len;
  if(page!=0) PPAGE=page;
  FCLKDIV_PRDIV8=0;  //直接使用晶体时钟 
  FCLKDIV_FDIV  =52; //分频后的时钟在150KHZ到200KHZ之间,还要满足运行时间要求
  FPROT       =0xFF; //打开所有的保护
  FSTAT_PVIOL   =1 ; //清除保护出错标志
  FSTAT_ACCERR  =1 ; //清除Flash访问错误发生标志
 
 //擦除操作 
  (*address) = 0x00A0; //随便写入一个数据,表示开始擦除
  FCMD	     = 0x40;   //帧擦除
  FSTAT_CBEIF= 1;      //清除该位
  while(!FSTAT_CCIF);
  
  //以下是开始写入
  for(len=0;len<256;len++) {
    
    while(!FSTAT_CBEIF);
    FSTAT_PVIOL   =1 ; //清除保护出错标志
    FSTAT_ACCERR  =1 ; //清除Flash访问错误发生标志
    *(address+len) = (*(WriteData+2*len))*256+*(WriteData+2*len+1); //随便写入一个数据,表示开始擦除
    FCMD	     = 0x20; //帧擦除
    FSTAT_CBEIF= 1;    //清除该位
    while(!FSTAT_CCIF);
  }  
  FPROT=0x00;		     //保护Flash块
}

⌨️ 快捷键说明

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