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

📄 target.c

📁 ucos在三星s3c4419B上的移植
💻 C
字号:
/*
;************************************************************************************************************
;*				        				北京精仪达盛科技有限公司
;*                                     	     研    发    部
;*
;*                                 	     http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : target.c	
;* 文件功能 : 该文件为S3C44B0硬件平台配置具体函数的初始化。
;* 补充说明 : 
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM开发小组
;* 修改日期 : 2004/04/25
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/

#include "..\test\SRC\44b.h"
#include "..\test\SRC\target.h"
#include "..\test\SRC\44blib.h"
//#include "..\..\Uart_driver\inc\Uart_driver.h"
#include "..\test\SRC\includes.h"
/*
*************************************************************************************************************
-  
- 程序段说明 : 以下函数为各异常模式服务子程序。设成死循环是为调试用,一旦发生此类异常,程序便跳入异常模式服务
-              子程序,终止程序运行。
-
*************************************************************************************************************
*/

void HaltUndef(void)  																				 //未定义
{
//    Uart_Printf(0,"the programm is haltUndefed");
    while(1);
}

void HaltSwi(void)  																				 //软中断
{
//    Uart_Printf(0,"the programm is haltSWI");
    while(1);
}

void HaltPabort(void)  																			  //预取指中止
{
//    Uart_Printf(0,"the programm is haltPaborted");
    while(1);
}

void HaltDabort(void)  																			   //数据中止
{
//    Uart_Printf(0,"the programm is haltdaborted");
    while(1);
}

void HaltFIQ(void)  																				 //快中断
{
//    Uart_Printf(0,"the programm is haltdFIQ");
    while(1);
}

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

/*
*************************************************************************************************************
- 函数名称 : Exep_S3cint_Init(void)
- 函数说明 : 异常及中断控制器的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Exep_S3cINT_Init(void)  
{ 
    int rr,qq;
    pISR_UNDEF  = (unsigned)HaltUndef;
    pISR_SWI    = (unsigned)HaltSwi;
    pISR_PABORT = (unsigned)HaltPabort;
    pISR_DABORT = (unsigned)HaltDabort;
    pISR_FIQ    = (unsigned)HaltFIQ;

    rINTCON = 0x1;           									// 所有中断均使用向量中断,打开 IRQ ,禁止 FIQ     
    rINTMOD = 0x00;	  												               // 所有模式配置为 IRQ 模式
    rINTMSK = 0x07ffffff;											                          // 屏蔽所有中断
    
    rr = rI_ISPC;
    rr = rINTPND;
    rr = rEXTINPND;
    rEXTINPND = 1;
    rI_ISPC = 0x3ffffff;                                        //中断清除;
    rr = rEXTINPND;
    qq = rINTPND;
}

/*
*************************************************************************************************************
- 函数名称 : Cache_Init(void)
- 函数说明 : S3C44B0内部缓存的初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/														
void Cache_Init(void)
{
    rSYSCFG = SYSCFG_8KB;
    rNCACHBE0 = 0x20001c00;								                                      
    rNCACHBE1 = 0xe0003000;
}

/*
*************************************************************************************************************
- 函数名称 : Rtc_Tick_Init(void)
- 函数说明 : 系统时钟节拍中断初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Rtc_Tick_Init(void)
{
    if ((rINTPND & BIT_TICK))    									               // 判断节拍中断位是否置位?
    {
        rI_ISPC = BIT_TICK; 										                  // 若是,则复位节拍中断
    }
    
    rINTMSK   &= ~(BIT_GLOBAL | BIT_TICK); 							               //屏蔽位置零,节拍中断开放
    rRTCCON = 0x0;													                          //初始RTC控制器
    rTICINT = 1 | (1<<7);											      //启动节拍中断 频率为 128/2 = 64 HZ  
}

/*
*************************************************************************************************************
- 函数名称 : VIRQ_Relate_task_Init(void)
- 函数说明 : 和任务调度相关的向量中断的初始化程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void VIRQ_Relate_Task_Init(void)
{
    pISR_TICK = (INT32U)UCOS_IRQHandler;				              // 在OS_CPU_A.S中定义,在OS_CPU.H中声明
    pISR_EINT4567 = (INT32U)UCOS_IRQHandler;
}
/*
*************************************************************************************************************
- 函数名称 : TargetInit(void)
- 函数说明 : 目标板初始化程序,主函数中只需调用此函数,即可完成目标板的初始化
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Target_Init(void)
{
 //   Uart_Init(0,115200,0);
    Port_Init();
    Exep_S3cINT_Init();
    VIRQ_Relate_Task_Init();
    Cache_Init();
    
    StartInterrupt(); 		                              //开中断,在此之前都是关中断状态,在44binit.s中定义
}
/*
*************************************************************************************************************
- 函数名称 : C_IRQHandler(void)
- 函数说明 : 切进UCOS中的处理IRQ的被调程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void  C_IRQHandler(void)
{
    INT32U reg;
    
    reg = rI_ISPR;
    
    switch (reg)
    {
            
        case BIT_TICK:
	    	Rtc_Tick_ISR();  								                   // 脉跳时钟节拍中断服务子程序
	    	break;
		
		case BIT_EINT4567:
		    IRQ_Eint4567_ISR(); 						                               // 按键中断服务子程序
        	break;
        	
        default :
	    	break;
    }
}

/*
*************************************************************************************************************
- 函数名称 : Rtc_Tick_Isr(void)
- 函数说明 : 系统时钟节拍中断服务子程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Rtc_Tick_ISR(void)
{
    OSTimeTick();
    rI_ISPC	=	BIT_TICK;      										                           //清除节拍中断
}

/*
*************************************************************************************************************
- 函数名称:void  IRQ_Eint4567(void)
- 函数功能:PWRINT中断服务子程序
- 输入参数:无
- 输出参数:无
*************************************************************************************************************
*/
void  IRQ_Eint4567_ISR(void)
{ 
	unsigned char i;
	
	//rINTMSK  = (rINTMSK | BIT_EINT4567);
	i = rEXTINPND;	

	switch(i)
    {
	 	case 1:
              
	 		rEXTINPND = 0x1;
			break;
	 
	 	case 2:

	    	break;
		
		default :
 	    	break;     	
    }
    rEXTINPND = i ;
    rI_ISPC   = BIT_EINT4567;
    //rINTMSK  = (rINTMSK & ~(BIT_EINT4567));
 }
/*
*************************************************************************************************************
*-													结束文件                                               -*
*************************************************************************************************************
*/

⌨️ 快捷键说明

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