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

📄 main.c

📁 LPC23XX系列EMC工程文件加源代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Lizhongsheng
** Created date:		2007-7-6
** Version:				1.0
** Descriptions:		EMCTest
**
**------------------------------------------------------------------------------------------------------
** Modified by:			yangshiping
** Modified date:		2007-09-03
** Version:				
** Descriptions:		对代码风格和注释进行校对、修改
**
** Rechecked by :        Litiantian
********************************************************************************************************/
#include "config.h"
#define CS1ADDR0BUF1  (*(volatile unsigned char *)(0x80004000))
#define CS1ADDR0BUF2  (*(volatile unsigned short *)(0x80004000))
#define CS1ADDR0BUF3  (*(volatile unsigned long *)(0x80004000)) 

/******************************************************************************************
** 函数名称:	DMA_Init
** 函数功能:	DMA 通道0初始化函数(存储器到存储器)。
** 入口参数:	Src_Address		源地址
**				Dest_Address	目的地址
**				DMA_Size		DMA传输大小
*******************************************************************************************/
uint8  DMA_Init(   	uint32  *Src_Address, 		       // 源地址
			    	uint32  *Dest_Address, 		       // 目的地址
			    	uint32  DMA_Size			       // DMA传输大小
			   )
{
	PCONP |= (1 << 29);							       // 使能GPDMA时钟
	DMACIntTCClear	= 0x01;						       // 清除终端计数中断标志
	DMACIntErrClr		= 0x01;					       // 清除错误中断标志
	DMACC0SrcAddr  	= (uint32)Src_Address;		       // 设置存储区源地址
	DMACC0DestAddr 	= (uint32)Dest_Address;		       // 设置存储区目标地址
	DMACC0LLI		= 0;						       // 下一个链表项无效
/*存储器到存储器传输时,突发大小为32位,源地址自增,目的地址自增 */
	DMACC0Control  	= ((DMA_Size/4) & 0x0FFF) 		   // 传输大小为突发传输的次数
			           | (0x04 << 12) | (0x04 << 15)   // 源突发和目标突发的大小为32位
			           | (0x02 << 18) | (0x02 << 21)   // 源和目标的数据传输宽度为1个字(32位)
			           | (1 << 26) | (1 << 27)		   // 源地址和目标地址自增
			           | 0x80000000;				   // 终端计数中断使能
	DMACConfiguration	= 0x01;						   // 使能DMA,使用小端模式
	DMACC0Configuration |= 0x01;					   // 使能通道0
	
//	while((DMACIntTCStatus & 0x01) == 0);			   // 等待通道0的传输完毕 
	return 0;
}

#define ADDR16	28
void EMCInit(void)
{
   uint32 tmp;
   
   SCS |= 0x01;
   PCONP = PCONP | 0x00000800; 	   //打开EMC控制器
   EMCControl = 0x00000001;

   
   PINSEL6 = 0x00005555;	       // D0--D7脚
   PINSEL8 = 0x55555555;	       // A0--A15脚
  
   /*设置nOE, nWE, nCS0, nCS1脚*/ 
   tmp =  PINSEL9;
   tmp &= 0x0FF0FFFF;
   PINSEL9 = tmp|0x50090000;	  
   
   //设置ADDR16脚,选择低64K
   tmp = ~(3<<24);
   PINSEL3 =  tmp&PINSEL3;
   FIO1DIR = FIO1DIR|ADDR16;
   FIO1CLR = ADDR16;
 
   /*设置Bank0的时序*/
   EMCStaticConfig0   = 0x0;
   EMCStaticWaitWen0  = 0x0;
   EMCStaticWaitOen0  = 0x0;
   EMCStaticWaitRd0   = 0x1f;
   EMCStaticWaitPage0 = 0x0;
   EMCStaticWaitWr0   = 0x1f;
   EMCStaticWaitTurn0 = 0x0;
   
   /*设置Bank1的时序*/
   EMCStaticConfig1   = 0x0;
   EMCStaticWaitWen1  = 0x0;
   EMCStaticWaitOen1  = 0x0;
   EMCStaticWaitRd1   = 0x1f;
   EMCStaticWaitPage1 = 0x0;
   EMCStaticWaitWr1   = 0x1f;
   EMCStaticExtendedWait = 0x0;
   EMCStaticWaitTurn1 = 0x0F;
       
}

int main (void)
{	
	uint8   *pch;
   	uint32  *pSrc; 			// 源地址
   	uint32  *pAddress; 		// 目的地址
   	uint32  Size;
   	uint32 x;
   	pSrc = (uint32 *)0x7FD00000;		    //通用SRAM
   	pAddress = (uint32 *)(0x80000000+4);    //外部存储器
                                            //初始化EMC

	EMCInit();
	pch = (uint8 *)0x80000000;
	for(x= 0;x<1024;x++)
	{
		*pch = x;
		pch ++;
	}
   	pSrc =(uint32 *)0x7FD00000;
   	Size = 1024;
   	
//通用SRAM(0x7fd00000-0x7fd01000)的内容复制到外部存储器   	
   	DMA_Init(pSrc,pAddress,Size);
   	pSrc+=1024;
   	
//外部存储器(0x80000000-0x80001000)的内容复制到通用SRAM的0x7fd01000开始的地址处   	
    DMA_Init(pAddress,pSrc,Size);

	while(1)
	{
	}
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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