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

📄 target.c.bak

📁 S3C44B0开发板中FLASH测试程序
💻 BAK
字号:
/*
;************************************************************************************************************
;*									 	江西师范大学理电学院创新中心
;*											 
;*                                             创新研发小组
;*--------------------------------------------- 文件信息 -----------------------------------------------------                                      
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : target.c	
;* 文件功能 : 该文件为S3C44B0硬件平台配置具体函数的初始化。
;* 补充说明 : 
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : zhouhong
;* 修改日期 : 2007/01/20
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : zhouhong   
;* 创建日期 : 2006/04/20 
;* 版本声明 : V1.0.1     
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
#include "..\INC\target.h"
#include "..\INC\44blib.h"
#include "..\..\Uart_driver\inc\Uart_driver.h"
#include "..\..\UCOSII\INC\includes.h"
#include "..\..\Application\inc\sysConfig.h"

/*
*************************************************************************************************************
-  
- 程序段说明 : 以下函数为各异常模式服务子程序。设成死循环是为调试用,
-      一旦发生此类异常,程序便跳入异常模式服务        
-      子程序,终止程序运行。
*************************************************************************************************************
*/

void DebugUNDEF(void)  																				 //未定义
{
    Uart_Printf("the programm is Enter Undefed");
    while(1);
}

void DebugSWI(void)  																				 //软中断
{
    Uart_Printf("the programm is Enter SWI");
    while(1);
}

void BreakPoint(void)  																			  //预取指中止
{
    #if SYS_DEBUG
    Uart_Printf("the programm is Enter break point.");
   	Uart_Printf("\nINTMSK:Address=%x,Value=%x",&rINTMSK,rINTMSK);
   	Uart_Printf("\nClear before INTPND:Address=%x,Value=%x",&rINTPND,rINTPND);
   	rI_ISPC=rINTPND;
   	Uart_Printf("\nClear after INTPND:Address=%x,Value=%x",&rINTPND,rINTPND);  
   	#endif
   	 
    while(1);
}

void DebugABORT(void)  																			   //数据中止
{
    Uart_Printf("the programm is Enter abort");
    while(1);
}

void DebugFIQ(void)  																				 //快中断
{
    Uart_Printf("the programm is Enter FIQ");
    while(1);
}

/*
*************************************************************************************************************
-
-                                   程序段说明 : 以下函数均为初始化函数
-            
*************************************************************************************************************
*/

/*
*************************************************************************************************************
- 函数名称 : SysIntInit(void)
- 函数说明 : S3C44B0 中断控制器的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void SysIntInit(void)  
{ 
    //vectored,IRQ enable,FIQ disable 
    rINTCON=0x01;	  

	/* All=IRQ mode */
    rINTMOD=0x0;	  

	/* All interrupt is masked. */
    rINTMSK=0x7ffffff/*BIT_GLOBAL*/;	  

	rI_ISPC=0x1ffffff;							//清除所有中断标志位
	
	//异常中断set interrupt vector routine
	pISR_UNDEF		= (unsigned) DebugUNDEF;
	pISR_SWI		= (unsigned) DebugSWI;
	pISR_PABORT		= (unsigned) DebugABORT;
	pISR_DABORT		= (unsigned) DebugABORT;
	pISR_RESERVED	= (unsigned) BreakPoint;		//not used
	pISR_FIQ		= (unsigned) DebugFIQ;
	
	pISR_ADC		= (unsigned) BreakPoint;
	pISR_RTC		= (unsigned) BreakPoint;
	pISR_UTXD1		= (unsigned) BreakPoint;
	pISR_UTXD0		= (unsigned) BreakPoint;
	pISR_SIO		= (unsigned) BreakPoint;
	pISR_IIC		= (unsigned) BreakPoint;
	pISR_URXD1		= (unsigned) BreakPoint;
	pISR_URXD0		= (unsigned) BreakPoint;
	pISR_TIMER5		= (unsigned) BreakPoint;
	pISR_TIMER4		= (unsigned) BreakPoint;
	pISR_TIMER3		= (unsigned) BreakPoint;
	pISR_TIMER2		= (unsigned) BreakPoint;
	pISR_TIMER1		= (unsigned) BreakPoint;
	pISR_TIMER0		= (unsigned) BreakPoint;
	pISR_UERR01		= (unsigned) BreakPoint;
	pISR_WDT		= (unsigned) BreakPoint;
	pISR_BDMA1		= (unsigned) BreakPoint;
	pISR_BDMA0		= (unsigned) BreakPoint;
	pISR_ZDMA1		= (unsigned) BreakPoint;
	pISR_ZDMA0		= (unsigned) BreakPoint;
	pISR_TICK		= (unsigned) BreakPoint;
	pISR_EINT4567	= (unsigned) BreakPoint;
	pISR_EINT3		= (unsigned) BreakPoint;
	pISR_EINT2		= (unsigned) BreakPoint;
	pISR_EINT1		= (unsigned) BreakPoint;
	pISR_EINT0		= (unsigned) BreakPoint;
			
}

/*
*************************************************************************************************************
- 函数名称 : Cache_Init(void)
- 函数说明 : S3C44B0内部缓存的初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/														
void Cache_Init(void)
{
    rSYSCFG = SYSCFG_8KB;				//使用8K字节的指令缓存,write buffer disable		 
	rNCACHBE0 = 0xc0002000;		//定义非Cache区,从0x2000000到0xbffffff,中断时进入ROM,若不允许CACHE不正常???
}

/*
*************************************************************************************************************
- 函数名称 : TargetInit(void)
- 函数说明 : 目标板初始化程序,主函数中只需调用此函数,即可完成目标板的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Target_Init(void)
{
	Cache_Init();
	ChangePllValue(PLL_M,PLL_P,PLL_S);					//在44binit.s 中已经初始化
   	Port_Init();    	
    Uart_Init(0,115200,0);
    Uart_Init(0,115200,1);
    Uart_Select(0);
    
#if SYS_DEBUG
    Uart_Printf("\n硬件初始化...\n"); 
#endif
	
	SysIntInit();											//S3c44b0 中断初始化
	TargetSysTimeInit();									//系统时钟初始化
    VIRQ_Relate_Task_Init();
#if SYS_DEBUG
    Uart_Printf("硬件初始化完成\n"); 
#endif

	OpenInterrupt(); 		          //切换到系统模式下启动中断,在此之前都是关中断状态,在44binit.s中定义
}

/*
*************************************************************************************************************
- 函数名称 : C_IRQHandler(void)
- 函数说明 : 切进UCOS中的处理IRQ的被调程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void  C_IRQHandler(void)
{
	INT32U reg;
	    
    reg = rI_ISPR;    
    switch (reg)
    {
        case BIT_TIMER5:    //系统时钟
            OSTimeTick();
            rI_ISPC	= BIT_TIMER5;     			//清除节拍中断
            break;
	case BIT_EINT4567:	//按键中断
		IrqKey();
		break;
	default :
	    	break;
	}   
}

/*
*************************************************************************************************************
- 函数名称 : VIRQ_Relate_task_Init(void)
- 函数说明 : 和任务调度相关的向量中断的初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void VIRQ_Relate_Task_Init(void)
{
    pISR_TIMER5=(unsigned)UCOS_IRQHandler;	// UCOS_IRQHandler在OS_CPU_A.S中定义,在OS_CPU.H中声明
    pISR_EINT4567=(unsigned)UCOS_IRQHandler;	// UCOS_IRQHandler在OS_CPU_A.S中定义,在OS_CPU.H中声明
}

/*
*************************************************************************************************************
- 函数名称 : S3c_InitTimers(void)
- 函数说明 : 系统时钟节拍定时器5的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void TargetSysTimeInit(void)
{    
#define  Prescaler2 15                                  
#define  MUX5       0
#define  Count      MCLK/(2*Prescaler2)/OS_TICKS_PER_SEC

    rTCON  &= ~(0x07 << 24);                             // Stop Timer5.
    rTCFG0  = (rTCFG0 & ~(0x0ff << 16)) | (Prescaler2 << 16);
    rTCFG1  = (rTCFG1 & ~(0x0f  << 20)) | (MUX5 << 20);
    rTCNTB5 = Count;
    rTCON  |= (0x06 << 24);                               // 手动下载周期值,并设置为自动装载.
    rTCON   = (rTCON & ~(1 << 25)) | (1 << 24) ;           // 启动.    
}
	
/*
*************************************************************************************************************
- 函数名称 : TargetStart(void)
- 函数说明 : 启动系统打开时钟节拍定时器
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void  TargetSysTimeStart(void)
{
	rINTMSK &=(~(BIT_TIMER5|BIT_GLOBAL));	// Start system timer & enable the interrupt.	
#if SYS_DEBUG
	Uart_Printf("Starting target\n");
#endif

}

/*
*************************************************************************************************************
- 函数名称 : ShowLed(unsigned char ledStatus)
- 函数说明 : LED显示函数
- 输入参数 : ledStatus为显示的状态
- 输出参数 : 无
*************************************************************************************************************
*/
void ShowLed(unsigned char ledStatus)
{
	
	LEDPort &= ~(LED0_ON | LED1_ON | LED2_ON);	//LED全灭
	LEDPort |=((ledStatus&0x07)<<1);	
}
/*
*************************************************************************************************************
*-													结束文件                                               -*
*************************************************************************************************************
*/

⌨️ 快捷键说明

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