OpenEdv-开源电子网

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

求助,mini板的外部中断,将IO口的设为上拉输入,下降沿有效,为什么用杜邦线一碰就会进中断了,杜邦线的另一端什么都没有接

[复制链接]

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-3-26
在线时间
2 小时
发表于 2018-3-26 17:52:51 | 显示全部楼层 |阅读模式
10金钱
求助,mini板的外部中断,将IO口的设为上拉输入,下降沿有效,为什么用杜邦线一碰就会进中断了,杜邦线的另一端什么都没有接。用的是EXTI15_10_IRQHandler这一组中断,我把EXTI_Line10,EXTI_Line11,EXTI_Line12,EXTI_Line13,EXTI_Line15这几个中断线全部用上了,对应的IO口是PB10,PB11,PC12,PA13,PA15。这样这几个IO口任意的一个有低电平输入的话就会进入EXTI15_10_IRQHandler这个函数。但是我用杜邦线或者其他的导电的东西碰一下这几个IO也会立马进入中断,杜邦线另一端是空的,没有接地也没接其他的东西。这是怎么回事啊?用mini的外部中端的例程也没有发现有这种情况。求大佬解答,这是为什么会有这种现象?怎样解决?以下是EXTI15_10_IRQHandler函数内的代码[mw_shl_code=c,true]void EXTI15_10_IRQHandler(void)
{
       
        stop();//关于用定时器1产生PWM波的程序,使其停止输出PWM波
        delay_ms(10);
        if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)|GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)|GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)|GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13)|GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)==0)
        {
                stop();

                if(EXTI_GetITStatus(EXTI_Line10)!=RESET)
                {
                        input1();//关于用定时器1产生PWM波的程序,下同
                        EXTI_ClearITPendingBit(EXTI_Line10);
                }
                else if(EXTI_GetITStatus(EXTI_Line11)!=RESET)
                {
                        input2();
                        EXTI_ClearITPendingBit(EXTI_Line11);
                }
                else if(EXTI_GetITStatus(EXTI_Line12)!=RESET)
                {
                        input3();
                        EXTI_ClearITPendingBit(EXTI_Line12);
                }
                else if(EXTI_GetITStatus(EXTI_Line13)!=RESET)
                {
                        input4();
                        EXTI_ClearITPendingBit(EXTI_Line13);
                }
                else if(EXTI_GetITStatus(EXTI_Line15)!=RESET)
                {
                        input5();
                        EXTI_ClearITPendingBit(EXTI_Line15);
                }
        }
}[/mw_shl_code]

以下是关于IO口的配置和EXTI的配置
[mw_shl_code=c,true]void EXTI_TIM1()
{
        EXTI_InitTypeDef exti;
        NVIC_InitTypeDef nvic;
        GPIO_InitTypeDef gpio;
       
               
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
       
        gpio.GPIO_Pin = GPIO_Pin_10;
        gpio.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOB, &gpio);
       
        gpio.GPIO_Pin = GPIO_Pin_11;
        gpio.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOB, &gpio);
       
        gpio.GPIO_Pin = GPIO_Pin_12;
        gpio.GPIO_Mode = GPIO_Mode_IPU; //
        GPIO_Init(GPIOC, &gpio);//

        gpio.GPIO_Pin = GPIO_Pin_13;//
        gpio.GPIO_Mode = GPIO_Mode_IPU; //
        GPIO_Init(GPIOA, &gpio);//
       
        gpio.GPIO_Pin = GPIO_Pin_15;//
        gpio.GPIO_Mode = GPIO_Mode_IPU; //
        GPIO_Init(GPIOA, &gpio);//
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource10);
        exti.EXTI_Line=EXTI_Line10;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Falling;//
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11);
        exti.EXTI_Line=EXTI_Line11;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Falling;//
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource12);
        exti.EXTI_Line=EXTI_Line12;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Falling;//
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);
        exti.EXTI_Line=EXTI_Line13;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Falling;
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);
        exti.EXTI_Line=EXTI_Line15;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Rising;
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
       
        nvic.NVIC_IRQChannel = EXTI15_10_IRQn;
        nvic.NVIC_IRQChannelPreemptionPriority = 0x02;
        nvic.NVIC_IRQChannelSubPriority = 0x01;
        nvic.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&nvic);
       
/////////////以上是关于EXTI15_10_IRQHandle的,下面的代码是关于EXTI9_5_IRQHandler的,并没有出现我说的情况

        gpio.GPIO_Pin = GPIO_Pin_5;
        gpio.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOC, &gpio);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
        exti.EXTI_Line=EXTI_Line5;
        exti.EXTI_Mode= EXTI_Mode_Interrupt;
        exti.EXTI_Trigger = EXTI_Trigger_Falling;
        exti.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exti);
       
        nvic.NVIC_IRQChannel = EXTI9_5_IRQn;
        nvic.NVIC_IRQChannelPreemptionPriority = 0x03;
        nvic.NVIC_IRQChannelSubPriority = 0x01;
        nvic.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&nvic);
}[/mw_shl_code]
这段还配置了PC5的外部中断,也是上拉输入,下降沿有效,但是并没有出现我说的那种情况,很不解,求教

最佳答案

查看完整内容[请看2#楼]

看下寄存器,设置是否成功(上拉模式)?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-3-26 17:52:52 | 显示全部楼层
CHAOSOoO 发表于 2018-3-26 18:55
不会的吧,另外一个IO口PC5我也是配置的外部中断,但是没有这种现象啊(╥╯^╰╥),还有原子哥的例程也没 ...

看下寄存器,设置是否成功(上拉模式)?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-26 18:22:48 | 显示全部楼层
会不会是人体静电影响了
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-3-26
在线时间
2 小时
 楼主| 发表于 2018-3-26 18:55:16 | 显示全部楼层
login_FAE 发表于 2018-3-26 18:22
会不会是人体静电影响了

不会的吧,另外一个IO口PC5我也是配置的外部中断,但是没有这种现象啊(╥╯^╰╥),还有原子哥的例程也没有这种现象
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-3-26
在线时间
2 小时
 楼主| 发表于 2018-4-2 12:29:34 | 显示全部楼层
正点原子 发表于 2018-3-27 01:30
看下寄存器,设置是否成功(上拉模式)?

又换了块板子就好了,已解决
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 02:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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