找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3327|回复: 4
收起左侧

STM32外部中断无法触发

[复制链接]
ID:500189 发表于 2019-9-1 10:59 | 显示全部楼层 |阅读模式
  1. 以下是我外部中断的函数  我就想问 为什么外部中断无法触发呢   我直接都把引脚接3.3V了还是无法触发   我IO口PDin4和5配置的都是下拉  PBin12和13配置的是上拉。 请问为什么触发不成功啊。。求教求教


  2. void EXTI0_IRQHandler(void)
  3. {
  4.         delay_ms(10);        //消抖
  5.         if(PDin(4)==1)
  6.         {
  7.                 left();
  8.         }
  9.         
  10.          EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
  11. }        
  12. //外部中断2服务程序
  13. void EXTI2_IRQHandler(void)
  14. {
  15.         delay_ms(10);        //消抖
  16.         if(PDin(5)==1)
  17.         {
  18.                 right();
  19.         }
  20.          EXTI_ClearITPendingBit(EXTI_Line2);//清除LINE2上的中断标志位
  21. }
  22. //外部中断3服务程序
  23. void EXTI3_IRQHandler(void)
  24. {
  25.         delay_ms(10);        //消抖
  26.         if(PBin(12)==0)                                                
  27.         {
  28.                         stop();              
  29.                         chuansongdai_work(1);
  30.                         if(PBin(13)==0)
  31.                         {
  32.                                 chuansongdai_work(3);   //传送带停                        
  33.                         }                        
  34.         }
  35.         
  36.          EXTI_ClearITPendingBit(EXTI_Line3);  //清除LINE3上的中断标志位  
  37. }
  38. //外部中断4服务程序
  39. void EXTI4_IRQHandler(void)
  40. {
  41.         delay_ms(10);        //消抖
  42.         
  43.         
  44.          EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE4上的中断标志位  
  45. }
  46.            
  47. //外部中断初始化程序
  48. //初始化PE2~4,PA0为中断输入.
  49. void EXTIX_Init(void)
  50. {
  51.         NVIC_InitTypeDef   NVIC_InitStructure;
  52.         EXTI_InitTypeDef   EXTI_InitStructure;
  53.         
  54.         //KEY_Init(); //按键对应的IO口初始化

  55.         hongwai_init();  
  56.         huidu_init();
  57.         
  58.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟
  59.         

  60.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource12);//PE2 连接到中断线2
  61.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource13);//PE3 连接到中断线3
  62.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource5);//PE4 连接到中断线4
  63.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource4);//PA0 连接到中断线0
  64.         
  65.   /* 配置EXTI_Line0 */
  66.   EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line4;//LINE0
  67.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
  68.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发
  69.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
  70.   EXTI_Init(&EXTI_InitStructure);//配置
  71.         
  72.         /* 配置EXTI_Line2,3,4 */
  73.         EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3;
  74.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
  75.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
  76.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断线使能
  77.   EXTI_Init(&EXTI_InitStructure);//配置

  78.         NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0
  79.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0
  80.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  81.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  82.   NVIC_Init(&NVIC_InitStructure);//配置
  83.         
  84.         NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//外部中断2
  85.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级0
  86.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  87.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  88.   NVIC_Init(&NVIC_InitStructure);//配置
  89.         
  90.         
  91.         NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//外部中断3
  92.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先1
  93.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  94.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  95.   NVIC_Init(&NVIC_InitStructure);//配置
  96.         
  97.         
  98.         NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//外部中断4
  99.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级1
  100.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
  101.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
  102.   NVIC_Init(&NVIC_InitStructure);//配置
  103.            
  104. }
复制代码


回复

使用道具 举报

ID:174087 发表于 2019-9-2 09:51 | 显示全部楼层
用断点调试一下,如果没进中断就去找触发的条件、中断配置,从后往前推
回复

使用道具 举报

ID:500189 发表于 2019-9-5 15:36 | 显示全部楼层
woshige 发表于 2019-9-2 09:51
用断点调试一下,如果没进中断就去找触发的条件、中断配置,从后往前推

已经解决了  谢谢
回复

使用道具 举报

ID:680768 发表于 2020-1-3 22:54 | 显示全部楼层
1844952977 发表于 2019-9-5 15:36
已经解决了  谢谢

楼主,你是怎么解决的?我也遇到和你一样的问题,谢谢!
回复

使用道具 举报

ID:232306 发表于 2020-5-14 14:40 | 显示全部楼层
1844952977 发表于 2019-9-5 15:36
已经解决了  谢谢

小气,只问不大,咋解决的不说
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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