📄 target.c
字号:
/*
;************************************************************************************************************
;* 江西师范大学理电学院创新中心
;*
;* 创新研发小组
;*--------------------------------------------- 文件信息 -----------------------------------------------------
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;*
;* 文件名称 : target.c
;* 文件功能 : 该文件为S3C44B0硬件平台配置具体函数的初始化。
;* 补充说明 :
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : zhouhong
;* 修改日期 : 2006/04/20
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 :
;* 创建日期 :
;* 版本声明 :
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
#include "..\INC\target.h"
#include "..\INC\44blib.h"
#include "..\..\Uart_driver\inc\Uart_driver.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) //预取指中止
{
Uart_Printf("the programm is Enter break point.");
#if SYS_DEBUG
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);
}
/*
*************************************************************************************************************
-
- 程序段说明 : 以下函数均为初始化函数
-
*************************************************************************************************************
*/
/*
*************************************************************************************************************
- 函数名称 : S3cint_Init(void)
- 函数说明 : S3C44B0 中断控制器的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void S3cINT_Init(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
S3cINT_Init(); //S3c44b0 中断初始化
#if SYS_DEBUG
Uart_Printf("硬件初始化完成\n");
#endif
OpenInterrupt(); //开中断,在此之前都是关中断状态,在44binit.s中定义
}
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 + -