port_fun.h

来自「《DSP系统入门与实践》」· C头文件 代码 · 共 63 行

H
63
字号
void flash_ready()
{
    //u16 u_temp;
    u_temp=*(u16 *)(0xfffe);
    *(u16 *)(add1)=0xaa;
    u_temp=*(u16 *)(0xfffe);
    
    *(u16 *)(add2)=0x55;
    u_temp=*(u16 *)(0xfffe);
    
    *(u16 *)(add1)=0xf0;
    u_temp=*(u16 *)(0xfffe);
}

void flash_erase()
{
//整片擦除Flash
*(u16*)(add1)=0xaa;
u_temp=*(u16*)(0xfffe);
*(u16*)(add2)=0x55;
u_temp=*(u16*)(0xfffe);
*(u16*)(add1)=0x80;
u_temp=*(u16*)(0xfffe);
*(u16*)(add1)=0xaa;
u_temp=*(u16*)(0xfffe);
*(u16*)(add2)=0x55;
u_temp=*(u16*)(0xfffe);
*(u16*)(add1)=0x10;
u_temp=*(u16*)(0xfffe);

//判断结束信号,判断D7位是否为1;
  do {
    *(u16*)(0xfffe)=0x11;
    u_temp=*(u16*)(add1);
   } while((u_temp& 0x0080)==0x0000);
 //已完全擦除
}

void flash_write(u16 address,u16 data)
   {
      u_temp=*(u16*)(0xfffe);
	  *(u16*)(add1)=0xaa;
	  u_temp=*(u16*)(0xfffe);
	  
	  *(u16*)(add2)=0x55;
	  u_temp=*(u16*)(0xfffe);
	  
	 *(u16*)(add1)=0xa0;
	  u_temp=*(u16*)(0xfffe);
	  
	  *(u16*)(address)=data;//写数据
	  u_temp=*(u16*)(0xfffe);
  
	  do {
		   *(u16*)(0xfffe)=0x11;
		   temp1=*(u16*)(0x8020);
		   *(u16*)(0xfffe)=0x11;
		   temp2=*(u16*)(0x8020);
		   *(u16*)(0xfffe)=0x11;
	  	  }while((temp1 & 0x0040)!=(temp2 & 0x0040));
   }

⌨️ 快捷键说明

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