打印

请教STR中断处理入口地址偏移量的计算函数问题

[复制链接]
1751|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
povypeng|  楼主 | 2010-6-13 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在"中断处理入口地址偏移量的计算函数"中的"offset = (((*p)&0xffff)+0x7E0) >> 2"本人不是很明白,"0x7E0"是怎么来的?为何最后要右移两位?EIC->IVR  = 0xEA000000又是怎么来的?;各位能否作一下解释?谢谢!

{  
  extern u32 T0TIMI_Addr;
  u32 * p = (u32 *)& T0TIMI_Addr;
  u8 bCounter;
  u32 offset;

  
  EIC->ICR = 0x00000000;
  EIC->IER = 0x00000000;
  EIC->IPR = 0xFFFFFFFF;
  EIC->FIR = 0x0000000C;
  EIC->CIPR = 0x00000000;
  
  EIC->IVR  = 0xEA000000; // IVR = high half of "B offset" instruction

  for (bCounter=0;bCounter<32;bCounter++)
    {
      offset = (((*p)&0xffff)+0x7E0) >> 2;//?
      p++;
      EIC->SIR[bCounter] = offset << 16;
    }
EIC->SIR[]放是是中断函数的偏移地址,但为什么以& T0TIMI_Addr为首地址呢?

  }
沙发
povypeng|  楼主 | 2010-6-13 16:13 | 只看该作者
有谁帮助回答一下,谢谢!

使用特权

评论回复
板凳
povypeng|  楼主 | 2010-6-17 08:24 | 只看该作者
:'(

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝