OpenEdv-开源电子网

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

PB5 PB6 PB7 PB8 PB9外部中断 PB5 PB8 PB9 正常 PB6 PB7无法进入中断??

[复制链接]

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
发表于 2019-3-4 15:06:58 | 显示全部楼层 |阅读模式
10金钱
求助  
使用PB5~PB9 作为外部按键   PB5 PB8 PB9 能够响应进入中断  PB6 PB7无法进入  怎么回事?


[mw_shl_code=c,true]void KEY_Init(void) //IO初始化
{
        GPIO_InitTypeDef GPIO_InitStructure;
        //初始化KEY0-->GPIOA.13,KEY1-->GPIOA.15  上拉输入
        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟                  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTA,PORTE时钟

        //初始化 WK_UP-->GPIOA.0          下拉输入
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,默认下拉          
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA.0

}[/mw_shl_code]
[mw_shl_code=c,true]//外部中断0服务程序
void EXTIX_Init(void)
{

        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

    KEY_Init();         //        按键端口初始化

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

    //GPIOA.0          中断线以及中断初始化配置 上升沿触发 PA0  WK_UP
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource6);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource7);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);

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


          NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //使能按键WK_UP所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;        //抢占优先级2,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;                                        //子优先级3
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);                
}[/mw_shl_code]

[mw_shl_code=c,true]void EXTI9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line5)!=RESET)     
    {
        //中断处理,自行添加
                delay_ms(5);
                if(KEY0 == 0)
                {

                }
                EXTI_ClearITPendingBit(EXTI_Line5);
    }

        if(EXTI_GetITStatus(EXTI_Line6)!=RESET)     
    {
        //中断处理,自行添加
                delay_ms(5);
                if(KEY1 == 0)
                {

                }
                EXTI_ClearITPendingBit(EXTI_Line6);
    }

        if(EXTI_GetITStatus(EXTI_Line7)!=RESET)     
    {
        //中断处理,自行添加
                delay_ms(5);
                if(KEY2 == 0)
                {

                }
                EXTI_ClearITPendingBit(EXTI_Line7);
    }

        if(EXTI_GetITStatus(EXTI_Line8)!=RESET)     
    {
        //中断处理,自行添加
                delay_ms(5);
                if(KEY3 == 0)
                {

                }
                EXTI_ClearITPendingBit(EXTI_Line8);
    }

        if(EXTI_GetITStatus(EXTI_Line9)!=RESET)     
    {
        //中断处理,自行添加
                delay_ms(5);
                if(KEY0 == 0)
                {

                }
                EXTI_ClearITPendingBit(EXTI_Line9);
    }
} [/mw_shl_code]

最佳答案

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

进不去也可能,内部上拉 导线接地触碰 内部下拉 导线接vcc触碰 不然没有上升下降沿
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-4 15:06:59 | 显示全部楼层
nngogogo 发表于 2019-3-5 12:29
用的飞线触碰引脚  现在是进不了9_5这个中断

进不去也可能,内部上拉  导线接地触碰   内部下拉  导线接vcc触碰  不然没有上升下降沿
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
 楼主| 发表于 2019-3-4 15:12:01 | 显示全部楼层
现在用的是小的核心板  所有引脚都是悬空状态
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7610
金钱
7610
注册时间
2016-11-30
在线时间
645 小时
发表于 2019-3-4 15:31:47 | 显示全部楼层
看看别的地方有没有设置这两个引脚
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
 楼主| 发表于 2019-3-4 15:36:58 | 显示全部楼层
lvkanger 发表于 2019-3-4 15:31
看看别的地方有没有设置这两个引脚

又确定了一遍   没有,,,,
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
 楼主| 发表于 2019-3-4 17:32:54 | 显示全部楼层
顶!!!!!
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-4 20:10:09 | 显示全部楼层
F1系列的还是,看下芯片数据手册,看看重映射之类的
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-4 20:55:21 | 显示全部楼层
本帖最后由 nashui_sx 于 2019-3-4 20:57 编辑

设置下拉 你检测EXTI_Trigger_Rising上升沿没问题

为了又判断if(KEY0 == 0)   证明你的按键是按下低电平

那么松开就应该是高电平  你下拉了,按键就需要外部强上拉 不然你松开也是下拉的低电平吧

按下要是低电平  那就内部上拉  检测下降沿吧
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
 楼主| 发表于 2019-3-5 12:29:33 | 显示全部楼层
nashui_sx 发表于 2019-3-4 20:55
设置下拉 你检测EXTI_Trigger_Rising上升沿没问题

为了又判断if(KEY0 == 0)   证明你的按键是按下低电平 ...

用的飞线触碰引脚  现在是进不了9_5这个中断
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2016-1-23
在线时间
31 小时
 楼主| 发表于 2019-3-5 17:05:36 | 显示全部楼层
nashui_sx 发表于 2019-3-5 12:46
进不去也可能,内部上拉  导线接地触碰   内部下拉  导线接vcc触碰  不然没有上升下降沿

点醒梦中人    谢谢!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-5-16
在线时间
3 小时
发表于 2019-6-4 15:41:14 | 显示全部楼层
nashui_sx 发表于 2019-3-4 20:55
设置下拉 你检测EXTI_Trigger_Rising上升沿没问题

为了又判断if(KEY0 == 0)   证明你的按键是按下低电平 ...

谢谢老哥,让我解决的我的问题。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 05:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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