[HELP]请教裸机程序
TQ2440开发板的裸机程序里的2440lib.c中有这样一段程序void Isr_Init(void)
{
pISR_UNDEF= (unsigned)HaltUndef;
pISR_SWI = (unsigned)HaltSwi;
pISR_PABORT = (unsigned)HaltPabort;
pISR_DABORT = (unsigned)HaltDabort;
rINTMOD = 0x0; //All=IRQ mode
rINTMSK = BIT_ALLMSK; //All interrupt is masked.
rINTSUBMSK= BIT_SUB_ALLMSK; //All sub-interrupt is masked. <- April 01, 2002 SOP
}
其中
pISR_UNDEF的宏定义是
#define pISR_UNDEF (*(unsigned *)(_ISR_STARTADDRESS+0x4))
HaltUndef是一个函数,它的原形是
void HaltUndef(void)
{
Uart_Printf("Undefined instruction exception!!!\n");
while(1);
}
我想请教的是,void Isr_Init(void)这个函数进行的是什么初始化,而且void HaltUndef(void)是没有返回值的,将它的void返回值强制转换成unsigned到底是unsigned int还是unsigned char,返回值赋给pISR_UNDEF,pISR_UNDEF 得到的是什么?是0吗?在线等回答,谢谢!! #define pISR_UNDEF (*(unsigned *)(_ISR_STARTADDRESS+0x4))
这里并不是把函数HaltUndef的返回值强制转换成unsigned*
你的理解有误,再仔细看看吧,pISR_UNDEF保存的是HaltUndef函数的入口地址
至于函数Isr_Init的作用,看函数名就知道啦,初始化ISR 2# hg5249345
谢谢你,我想明白了,那句话只是把ISR的入口地址赋给pISR_UNDEF,下次想调用那个ISR的时候,直接调用pISR_UNDEF中的数据,把它作为地址,去调用ISR就可以了。
页:
[1]