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

📄 dec5416-mem.c

📁 5416完整例程
💻 C
字号:
/*********************************************************************************
*  MCPSB.C	v1.00   测试MCBSP同步串口测试的主程序	                             *
*  版权(c) 	2003-		北京合众达电子技术有限责任公司			                 *
*  设计者:	段立锋								                                 *
**********************************************************************************/
#include "type.h"
#include "sysreg.h"
#include "mcbsp54.h"
#include "memory.h"

#define  TESTCODEADDR  0x28000
#define  FLASH_ADDR 0x10000
#define  FLash_ADDR_MAX 0x3FFFF


unsigned int i= 0;
unsigned int k= 0;
unsigned long flashaddr = 0x400000;
unsigned long flashbaddr = 0;
unsigned long flashlong= 0;
unsigned int sramaddr = 0x8000;
unsigned long srampaddr = 0x100000;
unsigned int sramread[0x100];

main()
{	
	/*设置系统时钟*/
	sys_clk(CLK160);
	/*初始化DEC5416板卡*/
	dec5416_init();
	/*设置系统的高32k的软件等待为4个*/
	sys_wait(0x075ff);
	/*配置系统存储器*/
	/*设置数据空间的高32K为SRAM*/	
	memory_set(0x80);
	/*测试外部的SRAM,当安装CY7c1021时,为2页,每页32K*/
	/*				  当安装CY7C1041时,为8页,每页32K*/
	
	/*填写第一页*/
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i;
	}
	/*填写第二页*/
	memory_set(0x81);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+1;
	}
	/*填写第三页*/
	memory_set(0x82);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+2;
	}
	/*填写第四页*/
	memory_set(0x83);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+3;
	}
	/*填写第五页*/
	memory_set(0x84);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+4;
	}
	/*填写第六页*/
	memory_set(0x85);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+5;
	}
	/*填写第七页*/
	memory_set(0x86);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+6;
	}
	/*填写第八页*/
	memory_set(0x87);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+7;
	}
	/*修改页控制器,查看每页填的数据是否正确*/
	memory_set(0x80);
	memory_set(0x81);
	memory_set(0x82);
	memory_set(0x83);
	memory_set(0x84);
	memory_set(0x85);
	memory_set(0x86);
	memory_set(0x87);
	/*将Sram映射到程序空间的0x100000处*/
	memory_set(0xa0);
	/*读回头0x100个数据,观察是否正确*/
	progm_readm(srampaddr,&sramread[0],0x100);
	progm_readm( (srampaddr+0x8000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x10000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x18000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x20000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x28000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x30000),&sramread[0],0x100);
	progm_readm( (srampaddr+0x38000),&sramread[0],0x100);
	
	/*测试FLASH,将FLASH映射到程序空间0x400000以上*/
	memory_set(0x80);
	/*FLASH的整片擦除*/
	flash_erase((flashaddr+CHIP_ADDR),CHIP_ERASE);
	/*写入整片的数据*/	
	flashaddr = 0;
	for(flashlong = 0;flashlong<FLash_ADDR_MAX ;flashlong++)
	{
		if(flash_writes(flashaddr++,flashlong)==0)
		{
			/*写入错误计数*/
			k=k+1;
		}	
	}
	
	k=0;
	/*FLASH块擦除*/
	for(flashbaddr = 0x400000; flashbaddr<0x440000; flashbaddr=flashbaddr+0x8000)
	{
		if(flash_erase(flashbaddr,BLOCK_ERASE) == 0)
		{
			/*察除错误计数*/
			k=k+1;	
		}
	}
	/*写入整片的数据*/	
	flashaddr = 0;
	for(flashlong = 0;flashlong<FLash_ADDR_MAX ;flashlong++)
	{
		if(flash_writes(flashaddr++,(0x3ffff-flashlong) )==0)
		{
			/*写入错误计数*/
			k=k+1;
		}	
	}
	k=0;
	/*FLASH扇区擦除*/
	for(flashbaddr = 0x400000; flashbaddr<0x440000; flashbaddr=flashbaddr+0x800)
	{
		if(flash_erase(flashbaddr,SECTOR_ERASE) == 0)
		{
			/*察除错误计数*/
			k=k+1;	
		}
	}
	k = 0; 		     
}

⌨️ 快捷键说明

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