你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用STM32F103RET的PB8来做外部中断的问题

[复制链接]
wqlalala 发布时间:2013-3-28 19:24
       我做的一个板子上用STM32F103RET6的PB8的IO管脚来接收外部轻触按键输入的中断。我将这个PB8初始化并使能后运行,不去按轻触按键时发现程序总是不断的触发中断,使程序总是处于中断服务当中服务当中。下面是我的中断初始化和中断处理函数的代码,显示输出的计数器在不断的加一计数。这个PB8的管脚只连接了轻触按键,PB8通过10K电阻上拉到3.3V。我用示波器探了这个PB8也没发现有触发中断的脉冲产生,是一个平稳的3.3V。不知道出了什么问题,还望路过的大侠指点小弟。

    void Exti_IOPort_Init(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);

        EXTI_InitStructure.EXTI_Line =EXTI_Line8;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

void EXTI9_5_IRQHandler(void)
{
        unsigned short Itemp;
        ITStatus ItState,FlagState;

        ItState = EXTI_GetITStatus(EXTI_Line8);
        FlagState = EXTI_GetFlagStatus(EXTI_Line8);
        
        if((ItState != RESET) & (FlagState != RESET))
                {
                KEY2_NUM++;
                EXTI_ClearITPendingBit(EXTI_Line8);
                EXTI_ClearFlag(EXTI_Line8);
                ShowString88(3, 0, "K2 On!Count:");
                ShowCharNum(3, 12, KEY2_NUM);
                }
<span style="color: rgb(68, 68, 68); font-family: Tahoma, Helvetica, SimSun, sans-serif; line-height: 18px; background-color: rgb(238, 238, 238);">        for(Itemp=0;Itemp
收藏 评论7 发布时间:2013-3-28 19:24

举报

7个回答
zykzyk-93033 回答时间:2013-3-28 20:35:03

RE:用STM32F103RET的PB8来做外部中断的问题

你的本意是按键按下中断,可是你设置的是EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;上升沿中断,这个就是原因了。换成EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;肯定可以了
wqlalala 回答时间:2013-3-29 08:58:18

回复:用STM32F103RET的PB8来做外部中断的问题

        这个 EXTI_InitStructure.EXTI_Trigger我也改成EXTI_Trigger_Falling试过,结果还是一样的现象。我在电路上另外还有个一个轻触按键,也是一样的电路,只是连接到了PA0上,用 EXTI_InitStructure.EXTI_Trigger = Rising是没问题的的,每次按下去就产生一次中断。另外从理论上来分析的话,上下沿触发应该都是可以的,只是触发的时间是不一样的,一个是在按键按下的时候触发,一个是在按键按下去后等弹回来的时候触发。就是设置成上升沿触发,我按键不按下去,也不会产生上升沿电平,应该一直都是3.3V电平,就不会触发中断产生才对。
       不过还是谢谢二楼的建议。
wallwall1111 回答时间:2015-6-9 14:16:17
请问你的问题解决了吗?我也遇到一个类似的问题
我用到了GPIOG0-5一共6个按键,当我按下任意一个按键时   有可能其他按键的中断也会产生,我同样用示波器观察了STM32的引脚,都是稳定在3.3V。奇了怪了!
求指导!
novemer 回答时间:2015-6-21 00:43:50
wallwall1111 发表于 2015-6-9 14:16
请问你的问题解决了吗?我也遇到一个类似的问题
我用到了GPIOG0-5一共6个按键,当我按下任意一个按键时    ...

我也遇到这个问题了,区别是一直进中断,每次都清标志了,还是不停的进,诶。
chuxiaobo 回答时间:2017-6-5 15:09:48
http://www.eeboard.com/bbs/thread-4763-1-1.html请参考该文,时钟问题
chuxiaobo 回答时间:2017-6-5 15:10:25
http://www.eeboard.com/bbs/thread-4763-1-1.html请参考该文,时钟问题
zhao.zhao 回答时间:2017-6-5 17:40:38
基本可以判断为PA8的上拉电阻没焊好

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版