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

📄 ex_memory_test.c

📁 keil开发平台下的ADUC7027的功能模块代码。
💻 C
字号:
/**********************************************************************
  EX_memory_test.c file
  ADuC7027的第四个实验——外部RAM测试
  测试外部扩展的64K RAM,测试结果从串口返回,串口波特率设置为19200bps
  作者:Computer-lov
  建立日期:2006-3-19
  修改日期:2006-3-20
  版本:V1.0
  版权所有,盗版必究。
  Copyright(C) Computer-lov 2006-2016
  All rigths reserved
**********************************************************************/

#include <ADuC7027.H>
#include <../My_type.h>
#include "UART.H"
#include "EX_memory_test.h"

#define XDATA3_BIAS ((volatile uint16 *)(0x40000000))    /*外部RAM区域3基地址*/


///////////////////////////////////////////////////////////////
void EX_memory_init(void)
{
 GP2CON=0x20002220;  //将相应的管脚设置为访问RAM功能
 GP3CON=0x22222222;
 GP4CON=0x22222222;

 XMCFG=0x01;          //使能外部RAM
 XM3CON=0x03;         //设置为16位数据宽度以及使能外部RAM区域3
 XM3PAR=0x2022;       //
}
////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////
uint32 EX_memory_test(void)
{
 uint16 i;
 uint32 OK;

 OK=~0;

 for(i=0;i<0x8000;i++)   //按16位的方式访问32K,即检查全部的64K字节
  {
   XDATA3_BIAS[i]=0x0000;	   //写0
   if(XDATA3_BIAS[i]!=0x0000)  //读回比较
    {
                               //如果读回不为0
     OK=0;					   //测试失败
     prints("",1);			   //显示相关错误信息
     prints("Memory error at address: ",0);	//
     print_uint32(i*2+0x40000000);			  //错误地址
     prints("Write value: ",0);	  //写入的值
     print_uint16(0x0000);
     prints("Read value: ",0);	   //读回的值
     print_uint16(XDATA3_BIAS[i]);
    }

   XDATA3_BIAS[i]=0xFFFF;
   if(XDATA3_BIAS[i]!=0xFFFF)
    {
	 OK=0;
     prints("",1);
     prints("Memory error at address: ",0);
     print_uint32(i*2+0x40000000);
     prints("Write value:",0);
     print_uint16(0xFFFF);
     prints("Read value:",0);
     print_uint16(XDATA3_BIAS[i]);
    }

   XDATA3_BIAS[i]=0x5555;
   if(XDATA3_BIAS[i]!=0x5555)
    {
     OK=0;
	 prints("",1);
     prints("Memory error at address: ",0);
     print_uint32(i*2+0x40000000);
     prints("Write value: ",0);
     print_uint16(0x5555);
     prints("Read value: ",0);
     print_uint16(XDATA3_BIAS[i]);
    }
   
   XDATA3_BIAS[i]=0xAAAA;
   if(XDATA3_BIAS[i]!=0xAAAA)
    {
     OK=0;
	 prints("",1);
     prints("Memory error at address: ",0);
	 print_uint32(i*2+0x40000000);
     prints("Write value: ",0);
     print_uint16(0xAAAA);
     prints("Read value: ",0);
     print_uint16(XDATA3_BIAS[i]);
    }

   XDATA3_BIAS[i]=0x55AA;
   if(XDATA3_BIAS[i]!=0x55AA)
    {
     OK=0;
	 prints("",1);
     prints("Memory error at address: ",0);
     print_uint32(i*2+0x40000000);
     prints("Write value: ",0);
     print_uint16(0x55AA);
     prints("Read value: ",0);
     print_uint16(XDATA3_BIAS[i]);
    }
  }
 if(OK)								 //测试成功
  {
   prints("",1);                     //换行
   prints("Memory test passed!",1);
  }
 else								 //测试失败
  {
   prints("",1);                     //换行
   prints("Memory test failed!",1);
  }
 return OK;							 
}
////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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