OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6849|回复: 1

JTAG硬仿真STM32F103,无法进入中断服务程序

[复制链接]

3

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-4-9
在线时间
1 小时
发表于 2015-4-21 16:58:19 | 显示全部楼层 |阅读模式
5金钱
各位大侠,使用Keil编译程序,软仿真程序一切正常,如下图所示。EXTI_Line10一旦被给了一个下降沿信号,在NVIC当中马上可以看到EXTI LINE[15-10]interrupts 的Active位被置1,并立即进入中断服务程序并执行。


转向使用JTAGV8硬仿真时,单步执行进行调试。下图是硬仿真进入主程序初始化之后的的NVIC,从这里我们可以看到Tim4、USART1和EXTILine[15-10]interrupts中断均被正常初始化,亦即ENABLE被置位。


现在按调试板上的一个外部按键,希望触发外部中断,外部中断的初始化代码如下:
GPIO初始化代码:
void DALI_KEY_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10 | GPIO_Pin_11| GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD,&GPIO_InitStructure);
EXTI_ClearITPendingBit(EXTI_Line10);
EXTI_ClearITPendingBit(EXTI_Line11);
EXTI_ClearITPendingBit(EXTI_Line12);
EXTI_ClearITPendingBit(EXTI_Line13);
EXTI_ClearITPendingBit(EXTI_Line14);
EXTI_ClearITPendingBit(EXTI_Line15);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource10);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource11);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource12);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource13);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource14);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource15);
}
外部中断线的EXTI设置代码:
void DALI_EXTI_Config(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line10|EXTI_Line11|EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd=ENABLE;   
  EXTI_Init(&EXTI_InitStructure);  
}
外部按键的连接原理图如下图所示:


按下S1键之前,使用万用表测得此时芯片对应引脚输入电压为3.3V,按下之后,数字万用表测得此时电压为0,由于是设置下降沿触发,在这种情况之下,按理应该是引发这个外部中断,按下按键之后,再看NVIC,发现只是EXTILine[15-10]interrupts的Pending被正常置位(而不是软仿真时的Active被置位),如下图所示,这应该表明中断的确置位并等待中断执行,但查看此时的NVIC,没有任何中断被执行,按理来说,此时只能执行这个外部中断,然而外部中断就是无法进入,这到底是为什么呢?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-21 23:25:08 | 显示全部楼层
中断配置要开启AFIO时钟,你参考下我们库函数版本的代码。看看吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 07:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表