硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4108|回复: 6
收起左侧

[有问必答] 求助,外部中断没有进入相应入口程序

[复制链接]

12

主题

26

回帖

114

积分

初级会员

积分
114
发表于 2016-2-23 09:27:20 | 显示全部楼层 |阅读模式
RT 此处要利用PD7做为外部中断入口,判断其电平。但是运行时发现PD15(初始化配置为I/O开关输出)也可以进入EXIT9_5中断,电路上PD7和PD15隔离的没有回路,并且PD15和PD7互不影响对方电平。不知该如何解决。
void EXTIX_Init(void)
{

                EXTI_InitTypeDef EXTI_InitStructure;
                NVIC_InitTypeDef NVIC_InitStructure;

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //使能复用功能时钟

    //GPIOD.7 中断线以及中断初始化配置   下降沿触发
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource7);

          EXTI_InitStructure.EXTI_Line=EXTI_Line7;        //PD7
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);                 //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器


          NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //中断线5-9,共用中断函数
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //抢占优先级2,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                                        //子优先级1
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);            //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

}
void EXTI9_5_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line7)!=RESET)
   {
        EXTI_InitTypeDef EXTI_InitStructure;
        delay_ms(10);//消抖
        open_close++;
        if(open_close==1)
        {
                        USART1_Write_ButtonStatus(203,0xFF,0x00);delay_ms(5);
                        printf("开门\r\n");
                        EXTI_InitStructure.EXTI_Line=EXTI_Line7;        //PD7
                        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        
                        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
                        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
                        EXTI_Init(&EXTI_InitStructure);                 //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器        
        }
        if(open_close==2)
        {
                        USART1_Write_ButtonStatus(204,0xFF,0x00);delay_ms(5);
                        printf("关门\r\n");
                        EXTI_InitStructure.EXTI_Line=EXTI_Line7;        //PD7
                        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        
                        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
                        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
                        EXTI_Init(&EXTI_InitStructure);                 //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器        
                        open_close=0;
        }
        EXTI_ClearITPendingBit(EXTI_Line7); //清除LINE0上的中断标志位  
  }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2016-2-23 11:06:27 | 显示全部楼层
程序设计不太合理,切记不可在中断里面调用这种延迟函数delay_ms(10);//消抖,极其影响系统的实时性。
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2016-2-25 13:24:25 | 显示全部楼层

回 eric2013 的帖子

eric2013:程序设计不太合理,切记不可在中断里面调用这种延迟函数delay_ms(10);//消抖,极其影响系统的实时性。

 (2016-02-23 11:06) 
就是软件的问题,不过还没找到原因
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2016-2-25 17:47:38 | 显示全部楼层

回 361901725 的帖子

361901725:就是软件的问题,不过还没找到原因 (2016-02-25 13:24) 
现在PD8/9管脚状态变化也能进入PD7中断,其余引脚和PD7是隔离的,断开PD7脚的引线,PD7引脚电平不发生变化。基本排除硬件问题,但是中断函数中有限制是第7中断线发生的中断才会生效,但是照进不误,而且干扰引脚都是输出脚
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2016-2-25 17:48:52 | 显示全部楼层

回 eric2013 的帖子

eric2013:程序设计不太合理,切记不可在中断里面调用这种延迟函数delay_ms(10);//消抖,极其影响系统的实时性。

 (2016-02-23 11:06) 
现在PD8/9管脚状态变化也能进入PD7中断,其余引脚和PD7是隔离的,断开PD7脚的引线,PD7引脚电平不发生变化。基本排除硬件问题,但是中断函数中有限制是第7中断线发生的中断才会生效,但是照进不误,而且干扰引脚都是输出脚,把延时函数都撤了,不影响结果
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2016-3-8 15:48:39 | 显示全部楼层
问题已解决,输出引脚接的继电器,启动关闭继电器的时候对PD7电平发生了干扰,在中断函数中增加了判断电平(延时得保留,滤波处理)的语句后解决问题了。 [s:152]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2016-3-8 19:48:08 | 显示全部楼层
[s:151] [s:151]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 17:49 , Processed in 0.168196 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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