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

📄 target.c

📁 UCOS2.83在S3C44B0x移植的最更版
💻 C
字号:
/************************************************
 * NAME	    : TARGET.C							*
 * BY       : HappyHd
 * Version  : 1.Sep.2006						*
 ***********************************************/

#include "..\inc\target.h"
#include "..\ucos_ii\ucos_ii.h"  
#include "..\inc\includes.h"

extern OS_EVENT *KeySem;

void SystemInit(void)//系统初始化
{
 	rSYSCFG=SYSCFG_8KB;		//使用8K指令缓存		
	rNCACHBE0=((unsigned int)(Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);	
	Port_Init();	//端口初始化					
	#if (PLLON==1)
    ChangePllValue(PLL_M,PLL_P,PLL_S);//更改时钟频率48MHZ
    #endif			     
	Uart_Init(SERIAL_CHNNAL,SERIAL_BAUD);//串口初始化			      	
	Uart_Select(SERIAL_CHNNAL);	//选择串口				
	InitInterrupts();//中断初始化	
    InitTimers();	//	初始化系统节拍发生器TIMER0        	
	Delay(100);//延时调整
			
}

void InitTimers(void)//初始化系统节拍发生器TIMER0
{
	rTCFG0= 0x00000095;            //死区dead zone=0, 预标值pre0= 150
	rTCFG1= 0x00000003;            //全部中断, 分频器mux0= 1/16
	rTCNTB0= OS_CLOCK;             //设置中断频率
	rTCON = 0x00000002;            //手动更新 T0		
}

void TimersStart(void) //启动节拍发生器TIMER0 
{	
    rINTMSK=~( BIT_TIMER0 | BIT_GLOBAL );	//开启中断 TIMER0
	rTCON = 0x9;                            //自动装载并开始		        
}

void InitInterrupts(void)//初始化中断
{	    
    rINTCON=0x5;           //非向量中断,IRQ 允许,FIQ 禁止	  
	rINTMOD=0x0;	        //全部采用IRQ mode
	rINTMSK=BIT_GLOBAL;    // 屏蔽所有中断.	  

	pISR_UNDEF = (unsigned) DebugUNDEF;
	pISR_SWI = (unsigned) DebugSWI;
	pISR_PABORT = (unsigned) DebugPABORT;
	pISR_DABORT = (unsigned) DebugDABORT;
	pISR_FIQ = (unsigned) DebugFIQ;
	
	pISR_ADC= (unsigned) Adc_Int;
	pISR_RTC= (unsigned) Rtc_Alarm;
	pISR_IIC= (unsigned) Iic_Int;
	pISR_TIMER0= (unsigned) OSTickISR;
	pISR_TICK= (unsigned) Rtc_Tick;
	pISR_EINT4567= (unsigned) OSEINT4567ISR;      
}

void DebugUNDEF(void)
{
	Uart_Printf("Enter DebugUNDEF");
	while(1) { }
}

void DebugSWI(void) 
{
	Uart_Printf("Enter DebugSWI");
	while(1) { }
}

void DebugPABORT(void) 
{

	Uart_Printf("Enter DebugPABORT");
	while(1) { }
}

void DebugDABORT(void)
 {

	Uart_Printf("Enter DebugDABORT");
	while(1) { }
}

void DebugFIQ(void) 
{

	Uart_Printf("Enter DebugFIQ");
	while(1) { }
} 
/************************************************************************************************
 * ARMTargetInit4567											 * Description: This function initialize an ARM Target board						 * Argument   : none    				
************************************************************************************************/
volatile char which_int=0;
void EInt4567Isr(void)
{
    which_int = rEXTINTPND;
    rEXTINTPND = 0xf;		//clear EXTINTPND reg.		
    rI_ISPC = BIT_EINT4567;	//clear pending_bit

	    switch(which_int)
	    {
			case 1:
			{
				OSMboxPost(KeySem, (void *)4);
			}
			    break;
			case 2:
			{
				OSMboxPost(KeySem, (void *)5);
			}
			    break;
			case 4:
			{
				OSMboxPost(KeySem, (void *)6);
			}
			    break;
			case 8:
			{
				OSMboxPost(KeySem, (void *)7);
			}
			    break;
			default :
			break;
	    }
	
}


⌨️ 快捷键说明

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