OpenEdv-开源电子网

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

stm32f407 PD8 进不了外部中断

[复制链接]

18

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2016-3-17
在线时间
24 小时
发表于 2017-12-6 17:24:27 | 显示全部楼层 |阅读模式
1金钱
void EXTIX_Init(void)
{

        GPIO_InitTypeDef  GPIO_InitStructure;
        NVIC_InitTypeDef   NVIC_InitStructure;
        EXTI_InitTypeDef   EXTI_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource8);

    EXTI_InitStructure.EXTI_Line = EXTI_Line8;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
                          
}
void EXTI9_5_IRQHandler(void)
{
       
        EN_ADM3=0;
        SD_ADM3=1;
EXTI_ClearITPendingBit(EXTI_Line8);
}

问题出在哪呢


最佳答案

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

解决了,参考了网上的一个程序,一步步对下来。[mw_shl_code=applescript,true] void EXTI9_5_IRQHandler(void) { delay_ms(10); //消抖 if(EXTI_GetITStatus(EXTI_Line9) != RESET){ LED0=!LED0; } EXTI_ClearITPendingBit(EXTI_Line9);//清除LINE2上的中断标志位 } void EXTI15_10_IRQHandler(void) { delay_ms(10); //消抖 if(EXTI_GetITStatus(EXTI_Line10) != RESET){ LED1=!LED1; ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-3-19
在线时间
0 小时
发表于 2017-12-6 17:24:28 | 显示全部楼层
解决了,参考了网上的一个程序,一步步对下来。[mw_shl_code=applescript,true]
void EXTI9_5_IRQHandler(void)
{
        delay_ms(10);        //消抖

        if(EXTI_GetITStatus(EXTI_Line9) != RESET){
                LED0=!LED0;
        }
         EXTI_ClearITPendingBit(EXTI_Line9);//清除LINE2上的中断标志位

}
                 
                 
void EXTI15_10_IRQHandler(void)
{
        delay_ms(10);        //消抖

        if(EXTI_GetITStatus(EXTI_Line10) != RESET){
                LED1=!LED1;
        }
         EXTI_ClearITPendingBit(EXTI_Line10);//清除LINE2上的中断标志位  

}
//外部中断初始化程序
//初始化PE2~4,PA0为中断输入.
void EXTIX_Init(void)
{
        NVIC_InitTypeDef   NVIC_InitStructure;
        EXTI_InitTypeDef   EXTI_InitStructure;
       
        KEY_Init(); //按键对应的IO口初始化

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource9);//PA0 连接到中断线0
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource10);//PA0 连接到中断线0
       
  /* 配置EXTI_Line0 */

        EXTI_ClearITPendingBit(EXTI_Line9);
  EXTI_InitStructure.EXTI_Line = EXTI_Line9;//LINE0
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
  EXTI_Init(&EXTI_InitStructure);//配置
       
  EXTI_InitStructure.EXTI_Line = EXTI_Line10;//LINE0
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
  EXTI_Init(&EXTI_InitStructure);//配置
//       
        /* 配置EXTI_Line2,3,4 */

        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//外部中断0
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级0
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  NVIC_Init(&NVIC_InitStructure);//配置
        NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;//外部中断0
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级0
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  NVIC_Init(&NVIC_InitStructure);//配置
       
}
[/mw_shl_code]
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-12-6 23:22:36 | 显示全部楼层
看起来没错,在中断服务函数里面,判断下中断标志,再做处理,试试
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-3-19
在线时间
0 小时
发表于 2018-3-19 14:15:53 | 显示全部楼层
原子哥,我还是有这样的问题,在原0~4中断线有用的程序下修改到5~15中的任意一个中断线多次尝试,还是有这样的问题。无法进入中断。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-3-20 01:48:04 | 显示全部楼层
漫步xw 发表于 2018-3-19 14:40
解决了,参考了网上的一个程序,一步步对下来。[mw_shl_code=applescript,true]
void EXTI9_5_IRQHandler( ...

谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 16:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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