终于 整明白了中断的工作原…

本文深入解析ARM处理器的中断工作原理,通过具体的代码示例详细解释中断向量表、中断初始化及处理过程。作者通过实际经验分享了理解这些概念的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ARM C中中断程序和其他的c的中断程序一样,就是有中断向量表,入口地址,中断应用程序三部分组成

//中断向量表

// ISR
#define pISR_RESET     (*(unsigned *)(_ISR_STARTADDRESS+0x0))
#define pISR_UNDEF     (*(unsigned *)(_ISR_STARTADDRESS+0x4))
#define pISR       (*(unsigned *)(_ISR_STARTADDRESS+0x8))
#define pISR_PABORT    (*(unsigned *)(_ISR_STARTADDRESS+0xc))
#define pISR_DABORT    (*(unsigned *)(_ISR_STARTADDRESS+0x10))
#define pISR_RESERVED  (*(unsigned *)(_ISR_STARTADDRESS+0x14))
#define pISR_IRQ       (*(unsigned *)(_ISR_STARTADDRESS+0x18))
#define pISR_FIQ       (*(unsigned *)(_ISR_STARTADDRESS+0x1c))
//中断初始话

void Isr_Init(void)
{
    pISR_UNDEF=(unsigned)HaltUndef;/
    pISR  =(unsigned)Hal;
    pISR_PABORT=(unsigned)HaltPabort;
    pISR_DABORT=(unsigned)HaltDabort;
    rINTMOD=0x0;   // All=IRQ mode
    rINTMSK=BIT_ALLMSK;   // All interrupt is masked.

    //pISR_URXD0=(unsigned)Uart0_RxInt;
    //rINTMSK=~(BIT_URXD0);   //enable UART0 RX Default value=0xffffffff

#if 1
    pISR_USBD =(unsigned)IsrUsbd;
    pISR_DMA2 =(unsigned)IsrDma2;
#else
    pISR_IRQ =(unsigned)IsrUsbd;
     //Why doesn't it receive the big file if use this. (???)
     //It always stops when 327680 bytes are received.
#endif    
    ClearPending(BIT_DMA2);
    ClearPending(BIT_USBD);
    //rINTMSK&=~(BIT_USBD);  
  
    //pISR_FIQ,pISR_IRQ must be initialized
}

//具体中断函数
void HaltUndef(void)
{
    Uart_Printf("Undefined instruction exception!!!\n");
    while(1);
}

 

自己从一开始 接触arm,就听说了中断 ,同时也见到了以上类似代码,准确来说可以追溯到去年暑假,至于在本科时也在教科书上好象见过就不说了,呵呵。一直没有搞明白到底是怎么回事,直到昨天晚上看到这个例子 ,再加上前段时间看了 c epert programing 对c语言有了进一步的了解,终于搞明白了。呵呵 回首往事 ,发现关键在于,以前不明白 同一个数 在左是址,在右是值,所以上面pISR_UNDEF=(unsigned)HaltUndef;是把HaltUndef地址值 存放到(*(unsigned *)(_ISR_STARTADDRESS+0x4))这个地址中 呵呵 现在 总算拨开云雾见天日,其他相关问题便迎任而解了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值