FL2440中断裸机程序运行时出现Dabort exception!!!错误
.extern INT_Main.section .init
.global _start
_start:
b Reset
HandleUndef:
b HandleUndef
HandleSWI:
b HandleSWI
HandlePrefetchAbort:
b HandlePrefetchAbort
HandleDataAbort:
b HandleDataAbort
HandleNotUsed:
b HandleNotUsed
b HandleIRQ
HandleFIQ:
b HandleFIQ
Reset:
ldr sp,=0x1000
ldr r0,=0x53000000
mov r1,#0x0
str r1,
msr cpsr_c,#0xd2
ldr sp,=3072
msr cpsr_c,#0xdf
ldr sp,=0x1000
bl IO_Init
bl IRQ_Init
msr cpsr_c,#0x5f
ldr lr,=loop
ldr pc,=INT_Main
loop:
b loop
HandleIRQ:
sub lr,lr,#4
s>真美妙b sp!,{r0-r12,lr}
ldr lr,=int_return
ldr pc,=IRQ_Ser
int_return:
ldmia sp!,{r0-r12,pc}^
.end
》》》》》》》》》》》》》》》》》
#define rSRCPND (*(volatile unsigned *)0x4a000000)
#define rINTMOD (*(volatile unsigned *)0x4a000004)
#define rINTMSK (*(volatile unsigned *)0x4a000008)
#define rPRIORITY (*(volatile unsigned *)0x4a00000c)
#define rINTPND (*(volatile unsigned *)0x4a000010)
#define rINTOFFSET (*(volatile unsigned *)0x4a000014)
#define rSUBSRCPND (*(volatile unsigned *)0x4a000018)
#define rINTSUBMSK (*(volatile unsigned *)0x4a00001c)
#define rGPBCON (*(volatile unsigned *)0x56000010)
#define rGPBDAT (*(volatile unsigned *)0x56000014)
#define rGPBUP (*(volatile unsigned *)0x56000018)
#define rGPFCON (*(volatile unsigned *)0x56000050)
#define rGPFDAT (*(volatile unsigned *)0x56000054)
#define rGPFUP (*(volatile unsigned *)0x56000058)
#define rEXTINT0 (*(volatile unsigned *)0x56000088)
#define rEXTINT1 (*(volatile unsigned *)0x5600008c)
#define rEXTINT2 (*(volatile unsigned *)0x56000090)
#define rEINTFLT0 (*(volatile unsigned *)0x56000094)
#define rEINTFLT1 (*(volatile unsigned *)0x56000098)
#define rEINTFLT2 (*(volatile unsigned *)0x5600009c)
#define rEINTFLT3 (*(volatile unsigned *)0x560000a0)
#define rEINTMASK (*(volatile unsigned *)0x560000a4)
#define rEINTPEND (*(volatile unsigned *)0x560000a8)
void IO_Init(void);
void IRQ_Init(void);
void Delay(unsigned short t);
int INT_Main(void)
{
while(1)
{
rGPBDAT = ~(1<<8);
Delay(50);
rGPBDAT = ~(1<<10);
Delay(50);
}
return 0;
}
void IO_Init(void)
{
rGPBCON = 0x1dd7fc;
rGPBDAT = (1<<5)|(1<<6)|(1<<8)|(1<<10);
rGPBDAT &= 0xffe;
rGPBUP = 0X00;
rGPFCON = 1<<5;
//rGPFUP |= (1<<0);
}
void IRQ_Init(void)
{
rSRCPND = (1<<2);
rINTPND = (1<<2);
rINTMSK = ~(1<<2);
}
void IRQ_Ser(void)
{
rEINTPEND = 0;
rSRCPND = 0;
rINTPND = (1<<2);
while(1)
{
rGPBDAT = ~(1<<5);
Delay(50);
rGPBDAT = ~(0<<5);
Delay(50);
rGPBDAT = ~(1<<5);
}
}
void Delay(unsigned short t)
{
unsigned char i,j;
while(t--)
{
for(i=0;i<0xff;i++)
for(j=0;j<0xff;j++);
}
}
这段代码有什么问题吗?为什么会出现Dabort exception错误,求解决,求解决,求解决
页:
[1]