s3c44b0x 进不了中断
刚学arm,现在遇到问题,调了好多天,还没解决,谁帮帮忙啊,#include"44b.h"
#include"option.h"
/*
int pIrqStart = 0;
int pIrqFinish = 0;
int pIrqHandler = 0;
*/
int tempdat;
void __irq KEY_INT (void);
void PLL_Init() //CPU clock set
{
rPLLCON = (0X48 << 12)|(0X3 << 4)|0X2;//40MHZ
}
void IO_Init() //IO初始化
{
rPCONC = 0X55555555;
rPDATC = 0X4;
rPCONG = 0XFF00;
}
void INT_Init() //中断初始化
{
rEXTINT = 0X0;
//rEXTINTPND = 0X0;
rINTCON = 0X5;
rINTMOD = 0X0;
rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567);
rI_ISPC = 0X3FFF;
}
int Main()
{
IO_Init();
INT_Init();
PLL_Init();
pISR_EINT4567 = (unsigned)KEY_INT;
while(1);
{
tempdat = rINTPND;
}
}
void __irq KEY_INT (void) //中断
{
rPDATC = 0XF;
rI_ISPC |= BIT_EINT4567;
if( (rEXTINTPND & (1<<0) ) != 0)
{
rPDATC = 0X2;
rEXTINTPND |= (1 << 0);
}
if( (rEXTINTPND & (1<<1) ) != 0)
{
rPDATC = 0X4;
rEXTINTPND |= (1 << 1);
}
if( (rEXTINTPND & (1<<2) ) != 0)
{
rPDATC = 0X8;
rEXTINTPND |= (1 << 2);
}
if( (rEXTINTPND & (1<<3) ) != 0)
{
rPDATC = 0X0;
rEXTINTPND |= (1 << 3);
}
} 只能自己顶了, 启动代码里面好像有一个地方是要设置中断使能的代码。 回复【2楼】wxm521216
启动代码里面好像有一个地方是要设置中断使能的代码。
-----------------------------------------------------------------------
这个应该不需要自己改吧,我直接用的是板子测试程序的启动代码
这个是工程文件ourdev_616716TL9J9L.zip(文件大小:40K) (原文件名:interrupt_test.zip) 在44binit.s文件中的第215行中,已经将所有的中断屏蔽了。
ldr r0,=INTMSK
ldr r1,=0x07ffffff;all interrupt disable(屏蔽所有中断)
str r1, 不好要意思没看完整,在你贴的文件中已经开中断了。rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567); 回复【5楼】wxm521216
不好要意思没看完整,在你贴的文件中已经开中断了。rintmsk = ~(bit_global|bit_eint4567);
-----------------------------------------------------------------------
没事,谢谢你了,只有你愿意帮我,我调了好多天,还是没调出来,现在在看启动代码的资料,你看下我那工程设置的参数是不是有错啊 你把44binit.s文件中第40行 "NOIN EQU 0xc0"改成"NOINT EQU 0x00" no,要开cpsr的中断
页:
[1]