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

📄 target.c

📁 一个在KEIL公司的MDK3.20编译通过运行的基于S3C44B0X芯片的UCOSII源代码
💻 C
字号:
#include "..\inc\target.h"
//#include "..\ucos-ii\ucos_ii.h"               /* uC/OS interface */

/********************************************************************************************************
 * ARMTargetInit																						*
 *																										*
 * Description: This function initialize an ARM Target board											*
 *																										*
 * Argument   : none    																				*
 ********************************************************************************************************/

void ARMTargetInit(void) {
	
	//配置Cache
   	rSYSCFG=SYSCFG_8KB;				//使用8K字节的指令缓存
	rNCACHBE0=((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
	
	Port_Init();					//初始化端口
	
	Led_Disp();
	
	ChangePllValue(PLL_M ,PLL_P ,PLL_S );			//设置CPU频率为48M

	Uart_Init(0,115200);			//设置串口0的速率为115200bps
	
	Uart_Select(0);					//选择串口0

	ARMDisableInt();				//禁止中断
	
	ARMInitInterrupts();			//初始化中断,设置中断服务程序

	Delay(0);						//调整延时

}


/********************************************************************************************************
 * ARMTargetStart																						*
 *																										*
 * Description: This function start the ARM target running												*
 *																										*
 * Argument   : none																					*
 ********************************************************************************************************/


void ARMTargetStart(void) {
	
	ARMInitTimers();				//配置时钟0相关寄存器
	ARMInstallSystemTimer();		//时钟0中断使能

//	ARMStartTimer();				//时钟0开始,最好在系统的第一个任务调用,不推荐在这里调用
}


void ARMInitInterrupts(void)
{
	// Non-vectored,IRQ disable,FIQ disable    
	rINTCON=0x0;	  

	// All=IRQ mode
	rINTMOD=0x0;	  

	// All interrupt is masked.
	rINTMSK=BIT_GLOBAL;	  

 
	//set interrupt vector routine
//	pISR_RESET					//reserved
	pISR_UNDEF = (unsigned) DebugUNDEF;
	pISR_SWI = (unsigned) DebugSWI;
	pISR_PABORT = (unsigned) DebugPABORT;
	pISR_DABORT = (unsigned) DebugDABORT;
//	pISR_RESERVED = (unsigned) BreakPoint;		//not used
//	pISR_IRQ = (unsigned) 0;			//reserved
	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) OSEINT4567ISR;
	pISR_EINT3= (unsigned) BreakPoint;
	pISR_EINT2= (unsigned) BreakPoint;
	pISR_EINT1= (unsigned) BreakPoint;
	pISR_EINT0= (unsigned) BreakPoint;

	pISR_TIMER0= (unsigned) TickHandler;  
	
}


int ARMRequestSystemTimer(void *tick, const unsigned char *str) 
{

	return 1;

}


//Initialize timer that is used OS.
void ARMInitTimers(void)
{
	//dead zone=0, pre0= 150
	rTCFG0= 0x00000095;
	//all interrupt, mux0= 1/16
	rTCFG1= 0x00000003;

	//set T0 count
	rTCNTB0= _CLOCK;

	//update T0
	rTCON= 0x00000002;
	
}//ARMnitTimers


//start system timer0
void ARMStartTimer(void)
{
	//autoreload and start
	rTCON = 0x9;
}


// enable the interrupt.
void ARMInstallSystemTimer(void)
{
	rINTCON	= 0x1;	  								// Vectored mode, IRQ disable, FIQ disable    
    rINTMOD	= 0x0;	  								// All=IRQ mode

	//Non maksed TIMER0
	rINTMSK=~( BIT_TIMER0 | BIT_GLOBAL);	//Default value=0x7ffffff
	rI_ISPC = 0xffffffff;							// Clear all interrupt pend
}//ARMInstallSystemTimer


void BreakPoint(void) {

	Uart_Printf("Enter BreakPoint");
	
	while(1) {
		Led_Set(0x7);
		Delay(1000);
		Led_Set(0x0);
		Delay(1000);
	}//while
}//BreakPoint


void DebugUNDEF(void) {

	Uart_Printf("Enter DebutUNDEF");

//	while(1); 
//	{
//		Led_Set(0x7);
//		Delay(1000);
//		Led_Set(0x0);
//		Delay(1000);
//	}//while

}

void DebugSWI(void) {

	Uart_Printf("Enter DebutSWI");

	while(1) {
		Led_Set(0x7);
		Delay(1000);
		Led_Set(0x0);
		Delay(1000);
	}//while

}


void DebugPABORT(void) {

	Uart_Printf("Enter DebutPABORT");

	while(1);
	//{
//		Led_Set(0x7);
//		Delay(1000);
//		Led_Set(0x0);
//		Delay(1000);
//	}//while

}


void DebugDABORT(void) {
//	unsigned long l;
	Uart_Printf("Enter DebutDABORT");
//	while(1); 
	//{
	//	Led_Set(0x7);
	//	Delay(1000);
	//	Led_Set(0x0);
	//	Delay(1000);
	//}//while

}


void DebugFIQ(void) {

	Uart_Printf("Enter DebutFIQ");

	while(1) {
		Led_Set(0x7);
		Delay(1000);
		Led_Set(0x0);
		Delay(1000);
	}//while

}

⌨️ 快捷键说明

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