2010年11月19日

(原创)Main函数之Isr_Init分析
2010-06-08 12:21

初始化中断服务程序。当中断产生时,处理相应的程序
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.
}

pISR_UNDEF=(unsigned)HaltUndef;   就是将函数HaltUndef的地址强制转换为unsigned类型,赋给指针pISR_UNDEF。由pISR_UNDEF定义知,

#define pISR_UNDEF        (*(unsigned *)(_ISR_STARTADDRESS+0x4))

pISR_UNDEF为相应的异常中断地址。 函数名称代表函数的地址,即将HaltUndef函数的地址赋值到_ISR_STARTADDRESS+0x4 当发生中断时,系统会去pISR_UNDEF定义的地址里取出中断函数的地址也就是HaltUndef的地址,然后执行. 就相当于当发生中断时,执行HaltUndef函数. 


void HaltUndef(void)
{
Uart_Printf("Undefined instruction exception!!!\n");
while(1);
}

表示处理相应中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值