📄 44b0.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 + -