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

📄 44b0.c

📁 iar公司的s3c44b0x评估板的源程序
💻 C
字号:
#include "44b0.h"
#include "dm.h"
#include "clock.h"

__irq void __HaltUndef (void)
{
        DM_Printf("Undefined Instruction exception!!!\n");
        while(1);
}
__irq void __HaltSwi (void)
{
        DM_Printf("SWI exception!!!\n");
        while(1);
}
__irq void __HaltPAbort (void)
{
        DM_Printf("Prefetch Abort exception!!!\n");
        while(1);
}
__irq void __HaltDAbort (void)
{
        DM_Printf("Data Abort exception!!!\n");
        while(1);
}
__irq void __HaltIrq (void)
{
        DM_Printf("IRQ exception!!!\n");
        while(1);
}
__irq void __HaltFiq (void)
{
        DM_Printf("FIQ exception!!!\n");
        while(1);
}

void __UnhandleIrq (void)
{
        DM_Printf("Unhandled IRQ!!!\n");
        while(1);
}

__irq void C_IRQHandler (void)
{
        UINT32 wTemp, offset;

        wTemp = rI_ISPR;
        if (wTemp == 0) return;

        offset = 0;
        while ((wTemp & (1 << offset)) == 0)
        {
        	offset ++;
        	if (offset > 25) return;
        }

        offset *= 4;
        ((void(*)(void))(*((UINT32 *)(_ISR_STARTADDRESS+0x20+offset))))();
}

void InitHaltHandlers (void)
{
    pISR_UNDEF  = (unsigned) __HaltUndef;
    pISR_SWI    = (unsigned) __HaltSwi;
    pISR_PABORT = (unsigned) __HaltPAbort;
    pISR_DABORT = (unsigned) __HaltDAbort;
    pISR_IRQ    = (unsigned) __HaltIrq;
    pISR_FIQ    = (unsigned) __HaltFiq;

	pISR_ADC    = (unsigned) __UnhandleIrq;
	pISR_RTC    = (unsigned) __UnhandleIrq;
	pISR_UTXD1  = (unsigned) __UnhandleIrq;
	pISR_UTXD0  = (unsigned) __UnhandleIrq;
	pISR_SIO    = (unsigned) __UnhandleIrq;
	pISR_IIC    = (unsigned) __UnhandleIrq;
	pISR_URXD1  = (unsigned) __UnhandleIrq;
	pISR_URXD0  = (unsigned) __UnhandleIrq;
	pISR_WDT    = (unsigned) __UnhandleIrq;
	pISR_TIMER5 = (unsigned) __UnhandleIrq;
	pISR_TIMER4 = (unsigned) __UnhandleIrq;
	pISR_TIMER3 = (unsigned) __UnhandleIrq;
	pISR_TIMER2 = (unsigned) __UnhandleIrq;
	pISR_TIMER1 = (unsigned) __UnhandleIrq;
	pISR_TIMER0 = (unsigned) __UnhandleIrq;
	pISR_UERR01 = (unsigned) __UnhandleIrq;
	pISR_BDMA1  = (unsigned) __UnhandleIrq;
	pISR_BDMA0  = (unsigned) __UnhandleIrq;
	pISR_ZDMA1  = (unsigned) __UnhandleIrq;
	pISR_ZDMA0  = (unsigned) __UnhandleIrq;
	pISR_TICK   = (unsigned) __UnhandleIrq;
	pISR_EINT4567= (unsigned)__UnhandleIrq;
	pISR_EINT3  = (unsigned) __UnhandleIrq;
	pISR_EINT2  = (unsigned) __UnhandleIrq;
	pISR_EINT1  = (unsigned) __UnhandleIrq;
	pISR_EINT0  = (unsigned) __UnhandleIrq;

    pISR_IRQ    = (unsigned) C_IRQHandler;
    return;
}

void Port_Init (void)
{
	// PORT A GROUP
	/* BIT  9	8	7	6	5	4	3	2	1	0	*/
	/*      A24	A23	A22	A21	A20	A19	A18	A17	A16	A0  */
	/*      1	1	1	1	1	1	1	1	1	1	*/
	rPCONA = 0x3ff;

	// PORT B GROUP
	/* BIT 10       9       8       7       6       5       4       3       2       1       0       */
	/*     /CS5     /CS4    /CS3    /CS2    /CS1    (DQM3)  (DQM2)  /SRAS   /SCAS   SCLK    SCKE    */
	/*      1,      1,      1,      1,      1,      0,      0,      1,      1,      1,      1       */
	rPDATB = 0x7cf;
	rPCONB = 0x7cf;

	//  PORT C GROUP
	/*  PC15    14		13		12		11		10		9		8	*/
	/*	  o		o		RXD1	TXD1	o		o		o		o	*/
	/*    01	01		11		11		01		01		01		01	*/
	/*  PC7		6		5		4		3		2		1		0	*/
	/*    o		o		o		o		o		i		i		i	*/
	/*    01	01		01		01		01		00		00		00	*/
	rPDATC = 0x3000;
	rPCONC = 0x5f555540;
	rPUPC  = 0x3000;	// PULL UP RESISTOR should be enabled for I/O pins

	//  PORT D GROUP
	/*  BIT7		6		5		4		3		2		1		0	*/
	/*     VF		VM		VLINE	VCLK	VD3		VD2		VD1		VD0	*/
	/*	   01		01		01		01		01		01		01		01	*/
	rPDATD = 0x00;
	rPCOND = 0x5555;
	rPUPD  = 0x00;

	//  PORT E GROUP
	/*  Bit 8		7	    6   	5   	4   	3   	2   	1   	0   	*/
	/*	    ENDLAN	LED3	LED2	LED1	LED0	BEEP	RXD0	TXD0	CLKOUT	*/
	/*      00		01		01		01		01		01		10		10		10		*/
	rPDATE = 0x107;
	rPCONE = 0x0556a;
	rPUPE  = 0x07;

	//  PORT F GROUP
	/*  Bit 8		7		6		5       4		3		2		1		0		*/
	/*      o   	o   	o   	o       o       o   	/WAIT	IICSDA	IICSCL	*/
	/*	    001		001		001		001		01		01		10		10		10		*/
	rPDATF = 0x007;
	rPCONF = 0x09256a;
	rPUPF  = 0x007;

	//  PORT G GROUP
	/*  BIT 7		6		5		4		3		2		1		0	    */
	/*      i   	i	    i   	i   	INT3	INT2	o	    INT0	*/
	/*      00      00      00      00      11      11      01      11      */
	rPDATG = 0xfd;
	rPCONG = 0x00f7;
	rPUPG  = 0x00;

        rSPUCR=0x7; 	// D15-D0 pull-up resistor disabled
	rEXTINT=0x0;	// EXTINT 0-7 low level interrupt
	return;
}

void CPUMainSWInit (void)
{
    InitHaltHandlers();
    WDTSWInit();
    UartSWInit();

    return;
}

void CPUMainHWSetup (void)
{
	// PORT INITIALIZATION
	Port_Init();

	// Define Non_Cachable Area: 0x00000000 ~ 0x0C000000
	rNCACHBE0 = (((unsigned int)((Non_Cache_End_0)>>12))<<16)|((Non_Cache_Start_0)>>12);
	rNCACHBE1 = (((unsigned int)((Non_Cache_End_1)>>12))<<16)|((Non_Cache_Start_1)>>12);
	rSYSCFG = CACHECFG;         // 使用8K字节的指令缓存, write buffer enabled

	// Vectored, IRQ Enabled, FIQ Enabled
	rINTCON=0x0;
	// All=IRQ mode
	rINTMOD=0x0;
	// All Masked
	rINTMSK=BIT_GLOBAL;
	// Configure System Timer
	StartSysClock();

    return;
}

⌨️ 快捷键说明

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