OpenEdv-开源电子网

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

多个中断,部分中短通道没反应

[复制链接]

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
发表于 2017-6-29 09:54:14 | 显示全部楼层 |阅读模式
1金钱
设置了中断PC4、PC5、PB6、PB7、PA11、PA12为外部中断,EXTI4_IRQHandler无反应,单独使用是可以的
[mw_shl_code=c,true]GPIO_InitTypeDef GPIO_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_AHB1PeriphClockCmd(WIEGAND1_RCC_PORT | WIEGAND2_RCC_PORT | WIEGAND3_RCC_PORT | WIEGAND4_RCC_PORT,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

  GPIO_InitStructure.GPIO_Pin  = WIEGAND1_DATA0_GPIO | WIEGAND1_DATA1_GPIO;//PB6\PB7
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(WIEGAND1_PORT, &GPIO_InitStructure);

       
        GPIO_InitStructure.GPIO_Pin  = WIEGAND2_DATA0_GPIO | WIEGAND2_DATA1_GPIO; //PA11\PA12
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(WIEGAND2_PORT, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin  = WIEGAND3_DATA0_GPIO | WIEGAND3_DATA1_GPIO;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(WIEGAND3_PORT, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin  = WIEGAND4_DATA0_GPIO | WIEGAND4_DATA1_GPIO; //PC4\PC5
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(WIEGAND4_PORT, &GPIO_InitStructure);

        //WIEGAND1
        SYSCFG_EXTILineConfig(WIEGAND1_PortSource,EXTI_PinSource6);
  EXTI_InitStructure.EXTI_Line        = EXTI_Line6;
  EXTI_InitStructure.EXTI_Mode         = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);         

        SYSCFG_EXTILineConfig(WIEGAND1_PortSource,EXTI_PinSource7);
        //GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1);
        EXTI_InitStructure.EXTI_Line        = EXTI_Line7;
  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 = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority         = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
  NVIC_Init(&NVIC_InitStructure);


        //WIEGAND2
        SYSCFG_EXTILineConfig(WIEGAND2_PortSource,EXTI_PinSource11);
  EXTI_InitStructure.EXTI_Line        = EXTI_Line11;
  EXTI_InitStructure.EXTI_Mode         = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);         

        SYSCFG_EXTILineConfig(WIEGAND2_PortSource,EXTI_PinSource12);
        EXTI_InitStructure.EXTI_Line        = EXTI_Line12;
  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         = EXTI15_10_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority         = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

        //WIEGAND3
        SYSCFG_EXTILineConfig(WIEGAND3_PortSource,EXTI_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);         

        SYSCFG_EXTILineConfig(WIEGAND3_PortSource,EXTI_PinSource14);
        EXTI_InitStructure.EXTI_Line        = EXTI_Line14;
  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 | EXTI15_10_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority         = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
       
        //WIEGAND4
        SYSCFG_EXTILineConfig(WIEGAND4_PortSource,EXTI_PinSource4);
  EXTI_InitStructure.EXTI_Line        = EXTI_Line4;
  EXTI_InitStructure.EXTI_Mode         = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);         

        SYSCFG_EXTILineConfig(WIEGAND4_PortSource,EXTI_PinSource5);
        //GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1);
        EXTI_InitStructure.EXTI_Line        = EXTI_Line5;
  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         =  EXTI4_IRQn | EXTI9_5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority         = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
  NVIC_Init(&NVIC_InitStructure); [/mw_shl_code]



最佳答案

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

中断通道定义一定要分开,不然,只进入后面的中断线。 [mw_shl_code=c,true] NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructur ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

60

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-3-17
在线时间
120 小时
 楼主| 发表于 2017-6-29 09:54:15 | 显示全部楼层
中断通道定义一定要分开,不然,只进入后面的中断线。
[mw_shl_code=c,true] NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel =  EXTI9_5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);[/mw_shl_code]
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 23:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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