📄 memory.c
字号:
#define __MEMORY_H__
#include "Config.h"
/********************************************************************************************************
**函数名称:MemInit
**函数功能:外部存储器初始化
**输 入:无
**输 出:无
********************************************************************************************************/
void MemInit(void)
{
DEVMEMCFG |= BIT7; //使能外部总线访问
}
/********************************************************************************************************
**函数名称:FM18L08Test
**函数功能:并行FRAM存储器FM18L08测试程序,每次写入256个字节,再读回来与写入的比较
**输 入:无
**输 出:无
********************************************************************************************************/
void FM18L08Test(void)
{
//------------------------------------------------------------
//并行存储器FM18L08测试时用到的变量
//------------------------------------------------------------
uchar xdata FM18L08Cnt128;
uchar xdata FM18L08Cnt256_1;
uchar xdata FM18L08Cnt256_2;
uint xdata FM18L08Addr_1;
uint xdata FM18L08Addr_2;
uchar xdata FM18L08DatWR;
uchar xdata FM18L08DatRD;
uchar xdata FM18L08WRStore[256] = {0}; //写入的数据存储数组
//------------------------------------------------------------
FM18L08Addr_1 = 0x8000;
FM18L08Addr_2 = 0x8000;
UART0_Printf("\n ->FM18L08 test begin: \n");
for(FM18L08Cnt128 = 128; FM18L08Cnt128 > 0; FM18L08Cnt128 --)
{
//写入数据
//------------------------------------------------------------
//为了方便察看读写的数据可以定义宏 FM18L08DATASHOW
#ifdef FM18L08DATASHOW
UART0_Printf("\n\n write to 0x:%x \n",FM18L08Addr_1);
#endif
//------------------------------------------------------------
for(FM18L08Cnt256_1 = 0; FM18L08Cnt256_1 < 0xFF; FM18L08Cnt256_1 ++)
{
FM18L08DatWR = (int)rand(); //产生随机数
//------------------------------------------------------------
#ifdef FM18L08DATASHOW
UART0_Printf(" %d ",(int)FM18L08DatWR);
#endif
//------------------------------------------------------------
FM18L08WRStore[FM18L08Cnt256_1] = FM18L08DatWR; //把写入的数据保留待比较
XBYTE[FM18L08Addr_1] = FM18L08DatWR; //把随机数写入存储器
FM18L08Addr_1 ++; //地址产生增量
}
FM18L08DatWR = (int)rand(); //产生随机数
//------------------------------------------------------------
#ifdef FM18L08DATASHOW
UART0_Printf(" %d ",(int)FM18L08DatWR);
#endif
//------------------------------------------------------------
FM18L08WRStore[FM18L08Cnt256_1] = FM18L08DatWR; //把写入的数据保留待比较
XBYTE[FM18L08Addr_1] = FM18L08DatWR; //把随机数写入存储器
FM18L08Addr_1 ++; //地址产生增量
//读出数据
//------------------------------------------------------------
#ifdef FM18L08DATASHOW
UART0_Printf("\n Read From 0x:%x \n",FM18L08Addr_2);
#endif
//------------------------------------------------------------
for(FM18L08Cnt256_2 = 0; FM18L08Cnt256_2 < 0xFF; FM18L08Cnt256_2 ++)
{
FM18L08DatRD = XBYTE[FM18L08Addr_2]; //读回来的数据
//***************************************************************
#ifdef FM18L08DATASHOW
UART0_Printf(" %d ",(int)FM18L08DatRD);
#endif
//***************************************************************
if(FM18L08DatRD == FM18L08WRStore[FM18L08Cnt256_2]) //读写的数据一致
{;}
else //读写的数据不一致
{
UART0_Printf("\n\n Data Err Occur at 0x:%x \n\n",FM18L08Addr_2);
}
FM18L08Addr_2 ++; //地址产生增量
}
FM18L08DatRD = XBYTE[FM18L08Addr_2]; //读回来的数据
//***************************************************************
#ifdef FM18L08DATASHOW
UART0_Printf(" %d ",(int)FM18L08DatRD);
#endif
//***************************************************************
if(FM18L08DatRD == FM18L08WRStore[FM18L08Cnt256_2]) //读写的数据一致
{;}
else //读写的数据不一致
{
UART0_Printf("\n\n Data Err Occur at 0x:%x \n\n",FM18L08Addr_2);
}
FM18L08Addr_2 ++; //地址产生增量
//这256个字节测试完毕,输出一个点
UART0_Printf(".");
}
UART0_Printf("\n FM18L08 test End! \n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -