请教大家中断的问题,执行NVIC_Init时,出了问题

[复制链接]
6338|13
 楼主| lovegoogle 发表于 2008-5-6 23:27 | 显示全部楼层 |阅读模式
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
      
#ifdef  VECT_TAB_RAM
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif

 /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* Enable the EXTI9_5 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

当执行NVIC_Init的时候,执行不了。
在NVIC_Init函数中
NVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
      (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);

找了好久,不知道出了什么问题?可能是我的理解错了
 楼主| lovegoogle 发表于 2008-5-7 13:11 | 显示全部楼层

有人知道吗?

执行到NVIC_Init执行不下去了,有人遇到么?
dkill 发表于 2008-5-7 14:01 | 显示全部楼层

解决了吗

zhang..yb 发表于 2008-5-7 14:15 | 显示全部楼层

中断向量位置

你在RAM中还是在FLASH中调试? 中断向量位置不一样!!
 楼主| lovegoogle 发表于 2008-5-7 20:24 | 显示全部楼层

没有解决的,

是在ram当中调试的,
中断向量位置不一样?初次做arm开发,不明白
jtingwang 发表于 2008-5-8 10:58 | 显示全部楼层

用IAR吗?

用IAR吗?.xcl文件对了没有?
 楼主| lovegoogle 发表于 2008-5-8 12:19 | 显示全部楼层

是用IAR

还是不行,比较原来的example中的.xcl文件,都是一样的,不知道为什么?
还有,NVIC_IRQChannelPreemptionPriority ,NVIC_IRQChannelSubPriority ;是怎么确认的?看了手册,还是不明白!
有经验的帮忙看一下,谢谢!
jtingwang 发表于 2008-5-8 13:27 | 显示全部楼层

中断向量表、中断服务程序加进去没有?

中断向量表、中断服务程序加进去没有?
ST_ARM 发表于 2008-5-8 13:27 | 显示全部楼层

定义了VECT_TAB_RAM吗?

在RAM中调试,需要定义VECT_TAB_RAM。

 楼主| lovegoogle 发表于 2008-5-8 22:35 | 显示全部楼层

已经定义了,但还是没有解决

还是不行,估计是还是NVIC_IRQChannelPreemptionPriority ,NVIC_IRQChannelSubPriority定义错误,大家有没有遇到该情况? 
YeCM 发表于 2008-5-9 12:52 | 显示全部楼层

把你的程序传上来

还能把你的程序上传啊 大家可以帮你调下,对解决问题有帮助。
 楼主| lovegoogle 发表于 2008-5-9 21:52 | 显示全部楼层

还是没有解决

看错,还是没有解决!!
换成下面这样,就可以执行了,估计还是没有理解exti?
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* Enable the EXTI9_5 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;//EXTI3_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;




-------------
哈哈,用的是力源送的mini板,今天把片子焊下来换了103的,居然可以执行了,难道是ram不够,执行就出问题。有点怪异!!
------------
 楼主| lovegoogle 发表于 2008-5-10 11:45 | 显示全部楼层

弄错了,

刚上电的第一次可以执行,但第二次就不可以了,谢谢!
nxxiaoyaozi 发表于 2010-10-13 15:32 | 显示全部楼层
08 年的贴 我今天才遇到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部