📄 target.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 + -