4587|8

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有关STR7EIC [复制链接]

EIC->IVR = (u32)T3TIMI_IRQHandler;

EIC->SIR[T3TIMI_IRQChannel] = ((u16)T3TIMI_IRQHandler << 16);

EIC_IRQChannelConfig(T3TIMI_IRQChannel, ENABLE);

EIC_IRQChannelPriorityConfig(T3TIMI_IRQChannel, 1);

EIC->IVR 这里的高16位,置成中断ISR入口地址的高16位!  可以随便给个中断ISR吗? 不同的ISR高16位不一样,怎么?

此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2007-9-19 11:26
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

我也不知道0xE59F0000怎么来的...

void EIC_Init(void)
{
  extern u32 T0TIMI_Addr;
  u8 bCounter;
  u32 dOffset=((u32)&T0TIMI_Addr);

  /* Disable FIQ and IRQ interrupts */
  EIC->ICR = 0x00000000; 

  /* Disable all channels interrupts */
  EIC->IER = 0x00000000; 

  /* Clear all pending bits */
  EIC->IPR = 0xFFFFFFFF; 

  /* Disable all FIQ channels interrupts and clear FIQ */
  EIC->FIR = 0x0000000C; 

  /* channels pending bits */
  /* Ste the current priority level to zero */                         
  EIC->CIPR = 0x00000000; 

  /* IVR = high half of load PC instruction */
  EIC->IVR  = 0xE59F0000; 

  dOffset = (dOffset+0x00007E0)<<16;

  /* Initialize SIRn registers */
  for(bCounter=0; bCounter<32; bCounter++) 
  {
    EIC->SIR[bCounter] = dOffset|0xF0000000;
    dOffset += 0x00000004 << 16;
  }
}
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

查看710的存储器空间映射,0xE59F0000是空的

                                  
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 

EIC->IVR = (u32)T3TIMI_IRQHandler???

EIC->IVR = (u32)T3TIMI_IRQHandler???
你从哪里看到上述使用方法的?看来你对ARM7的EIC还不是很清楚.
关于EIC的正确使用,请参考以下代码:

/*******************************************************************************
* Function Name  : EIC_Init
* Description    : Initialise the EIC using the load PC instruction
*                  (PC = PC +offset)
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void EIC_Init(void)
{
  extern u32 T0TIMI_Addr;
  u8 bCounter;
  u32 dOffset=((u32)&T0TIMI_Addr);

  /* Disable FIQ and IRQ interrupts */
  EIC->ICR = 0x00000000; 

  /* Disable all channels interrupts */
  EIC->IER = 0x00000000; 

  /* Clear all pending bits */
  EIC->IPR = 0xFFFFFFFF; 

  /* Disable all FIQ channels interrupts and clear FIQ */
  EIC->FIR = 0x0000000C; 

  /* channels pending bits */
  /* Ste the current priority level to zero */                         
  EIC->CIPR = 0x00000000; 

  /* IVR = high half of load PC instruction */
  EIC->IVR  = 0xE59F0000; 

  dOffset = (dOffset+0x00007E0)<<16;

  /* Initialize SIRn registers */
  for(bCounter=0; bCounter<32; bCounter++) 
  {
    EIC->SIR[bCounter] = dOffset|0xF0000000;
    dOffset += 0x00000004 << 16;
  }
}
注:在vector表(从地址0开始)的后面定义:
   T0TIMI_Addr DCD T0TIMIIRQHandler
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 

不同的ISR高16位不一样,怎么?

                                 所有isr代码必须在同一个 64KB 区域。 也就是isr高十六位必须一样, 这是str7的特点?
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 

回JIANG_WX ,ARM白痴 !

上面的代码是COPY自KEIL下例程!和你发的,IRQ中断管理方式不同!

KEIL 实现中是将IVR中的内部当成当前IRQ的中断入口地址来实现的!

你发的这个是将IVR内容当成 LDR PC,[PC,#offset]这条指来实现!

/* IVR = high half of load PC instruction */
  EIC->IVR  = 0xE59F0000;   是指令代码!

这里有没有讨论STR7的群啊?
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 

不明白2个地方,请问JIANG_WX,谢谢

1.
/* IVR = high half of load PC instruction */
  EIC->IVR  = 0xE59F0000; 
0xE59F0000怎么来的?0xE59Fxxxx这些空间本来就是空的.
2.
dOffset = (dOffset+0x00007E0)<<16;

  /* Initialize SIRn registers */
  for(bCounter=0; bCounter<32; bCounter++) 
  {
    EIC->SIR[bCounter] = dOffset|0xF0000000;
    dOffset += 0x00000004 << 16;
  }


0x00007E0是什么?
dOffset|0xF0000000?
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 

楼下的

楼下的,不是告诉你了嘛,
/* IVR = high half of load PC instruction */
  EIC->IVR  = 0xE59F0000; 

IVR[31-15] -》是LDR PC指令啊!

dOffset = (dOffset+0x00007E0)<<16;是第一个IRQ通道的入口地址!
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

9
 

感谢楼上的

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
直播报名最后1周:艾迈斯欧司朗 OSP 开放协议,从氛围灯动态照明到传感器交互融合
直播时间:4月22日(周二)10:00
直播奖励:京东卡、蓝牙温湿度计、定制水杯

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 14

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表