📄 ex_memory_test.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 + -