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

📄 target.c

📁 基于S3C2410的开发板,实现A/D转换的源代码,在ADS开发环境下运行.
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: target.h
** Last modified Date: 2005-12-31 
** Last Version: v1.0
** Description: 目标板特殊的代码,包括异常处理程序和目标板初始化程序
**
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2005-12-31 
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#define  IN_TARGET
#include "config.h"


/*********************************************************************************************************
**                  "全局和静态变量在这里定义"         
**        global variables and static variables define here
********************************************************************************************************/

// IRQ中断向量地址表定义
uint32  VICVectAddr[32];

// BWSCON寄存器地址定义
#define  BWSCON_ADDR	0x48000000

// 声明向量表Vectors
extern void Vectors(void);



/*********************************************************************************************************
** Function name: IRQ_Exception
** Descriptions: 中断异常处理程序(实现向量中断处理),用户无需改动
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void __irq  IRQ_Exception(void)
{	
	void    (*__Handler)(void);	
	int     irq_no;
	uint32  bak;		
	
	// 找出当前中断号
	bak = rINTPND;				// 读取INTPND的值
	for(irq_no=0; irq_no<32; irq_no++)
	{	
	    bak = bak>>1;
		if(bak == 0) break;
	}
	
	// 取得中断服务程序地址并执行
	__Handler = (void (*)(void)) VICVectAddr[irq_no];
	__Handler();
}

	

/*********************************************************************************************************
** Function name: FIQ_Exception
** Descriptions: 快速中断异常处理程序,用户根据需要自己改变程序
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  FIQ_Exception(void)
{
    while(1);                   // 这一句替换为自己的代码
}



// 总线配置数据表 (用户可以在config.h文件中配置总线)	
const uint32  __BUS_INIT[] =
{	
	(B7_BWCON<<28)|(B6_BWCON<<24)|(B5_BWCON<<20)|(B4_BWCON<<16)|(B3_BWCON<<12)|(B2_BWCON<<8)|(B1_BWCON<<4),	// BWSCON寄存器
	B0_BANKCON,			// BANKCON0寄存器
	B1_BANKCON,			// BANKCON1寄存器 	
	B2_BANKCON, 		// BANKCON2寄存器
	B3_BANKCON, 		// BANKCON3寄存器
	B4_BANKCON, 		// BANKCON4寄存器
	B5_BANKCON, 		// BANKCON5寄存器
	B6_BANKCON, 		// BANKCON6寄存器 (SDRAM)
	B7_BANKCON, 		// BANKCON7寄存器 (SRAM)
	(1<<23)|(0<<22)|(0<<20)|(3<<18)|(1113),		// REFRESH寄存器(SDRAM) 例如:period=15.6us, HCLK=60Mhz, (2048+1-15.6*60)
	(1<<7)|(1<<5)|(1<<4)|(2<<0),				// BANKSIZE寄存器,128MB
	(3<<4),										// MRSRB6寄存器
	(3<<4)										// MRSRB7寄存器	
};

/*********************************************************************************************************
** Function name: TargetBusInit
** Descriptions: 针对目标板的总线系统初始化,包括Bank的宽度、SDRAM控制器等等。
**               不要在此函数中加入任何用户代码。
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  TargetBusInit(void)
{   
#ifdef	__Release	
    int  i;
    volatile uint32  *cp1;
    							    		
	// 总线设置,初始化SDRAM控制器
	cp1 = (void *)BWSCON_ADDR;
	for(i=0; i<13; i++)
	{
		*cp1++ = __BUS_INIT[i];		
	}
#endif    
}
	


/*********************************************************************************************************
** Function name: DispDesktop
** Descriptions: 控制液晶屏显示桌面图片
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  DispDesktop(void)
{
#if  DISP_BGPIC!=0
    extern uint16 gImage_bliss[];       // 声明外部图片资源
    
    GUI_DispPic(0,0, 640,480, gImage_bliss);    // 显示桌面   
#endif
}


			
/*********************************************************************************************************
** Function name: TargetResetInit
** Descriptions: 调用main函数前目标板初始化代码,根据需要改变,不能删除。
**               针对目标板的系统初始化,包括WDT、中断、PLL等等。
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  TargetResetInit(void)
{
	int  i;
	volatile uint32  *cp1, *cp2;
	
	cp1 = cp2 = NULL;			// 防止编译报警
	
	rWTCON = 0x0000;			// 关闭WDT 
	rINTMSK = 0xFFFFFFFF;		// 禁止所有中断 (中断控制器)
	rINTSUBMSK = 0x07FF;
	rSRCPND = 0xFFFFFFFF;		// 清除中断(源)标志
	rINTPND = 0xFFFFFFFF;		// 清除IRQ中断标志	
		
#ifdef	__Release		
	// 系统时钟设置,启用PLL
	rLOCKTIME = 0x00FFFFFF;		// 锁定时间设置U_LTIME=0xFFF,M_LTIME=0xFFF
	
	i = 0;
	if(HCLK == (FCLK/2)) i = i | 0x02;
	if(PCLK == (HCLK/2)) i = i | 0x01;
	rCLKDIVN = i;				// 设置HCLK、PCLK分频值	
	
	rMPLLCON = 	MPLLCON_200;	// 设置CPU时钟为200Mhz (FCLK)								   
#else				
	// 复制异常向量表操作		
	cp1 = (uint32 *) Vectors;
    cp2 = (uint32 *) 0x00000000;
    for (i = 0; i < 16; i++)
    {
        *cp2++ = *cp1++;
    }
#endif	

    GUI_Initialize();                           // 初始化LCD显示				   
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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