OpenEdv-开源电子网

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

请教一下大家,我要用PA5\PA6\PA7\PA84个引脚进行外部中断,但是现在按键没有反应,这是程序,大家帮我看一下

[复制链接]

209

主题

771

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-3-26
在线时间
286 小时
发表于 2022-6-13 14:46:54 | 显示全部楼层 |阅读模式
10金钱
请教一下大家,我要用PA5\PA6\PA7\PA84个引脚进行外部中断,但是现在按键没有反应,这是程序,大家帮我看一下
  1. void EXTI9_5_IRQHandler(void)
  2. {               
  3.        
  4.           //Ïû¶¶                         
  5.         if(EXTI_GetITStatus(EXTI_Line5) != RESET)  
  6.   {         
  7.                   delay_ms(10);
  8.                         if(KEY5==1)
  9.                                 {          
  10.                                 printf("16");
  11.                                 }
  12.         EXTI_ClearITPendingBit(EXTI_Line5);    // Clear the EXTI line 5 pending bit   
  13.   }
  14.        
  15.        
  16.         if(EXTI_GetITStatus(EXTI_Line6) != RESET)  
  17.      {         
  18.                       delay_ms(10);
  19.                                   if(KEY6==1)
  20.                                                 {          
  21.                                                 printf("17");
  22.                                                 }           
  23.            EXTI_ClearITPendingBit(EXTI_Line6);    // Clear the EXTI line 5 pending bit   
  24.      }
  25.       

  26.                  if(EXTI_GetITStatus(EXTI_Line7) != RESET)  
  27.      {         
  28.         delay_ms(10);
  29.                           if(KEY7==1)
  30.                                         {          
  31.                                         printf("18");
  32.                                         }
  33.          EXTI_ClearITPendingBit(EXTI_Line7);    // Clear the EXTI line 5 pending bit   
  34.        }
  35.             
  36.                  
  37.                    if(EXTI_GetITStatus(EXTI_Line8) != RESET)  
  38.            {         
  39.                             delay_ms(10);
  40.                                   if(KEY8==1)
  41.                                                      {          
  42.                                                      printf("19");
  43.                                                      }
  44.                 EXTI_ClearITPendingBit(EXTI_Line8);    // Clear the EXTI line 5 pending bit   
  45.            }

  46. }
复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

209

主题

771

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-3-26
在线时间
286 小时
 楼主| 发表于 2022-6-13 14:53:03 | 显示全部楼层
这是配置
  1. //ía2¿ÖD¶Ï3õê¼»ˉoˉêy
  2. void EXTIX_Init(void)
  3. {

  4.           EXTI_InitTypeDef EXTI_InitStructure;
  5.           NVIC_InitTypeDef NVIC_InitStructure;

  6.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ía2¿ÖD¶Ï£¬Dèòaê1ÄüAFIOê±Öó

  7.           KEY_Init();//3õê¼»ˉ°′¼ü¶Ôó|ioÄ£ê½

  8.     //GPIOC.5 ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  9.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource5);

  10.           EXTI_InitStructure.EXTI_Line=EXTI_Line5;
  11.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  12.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//ϽμÑØ′¥·¢
  13.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  14.           EXTI_Init(&EXTI_InitStructure);                 //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷

  15.     //GPIOA.15          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  16.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);

  17.           EXTI_InitStructure.EXTI_Line=EXTI_Line15;
  18.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  19.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  20.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  21.           EXTI_Init(&EXTI_InitStructure);                  //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷

  22.     //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  23.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);

  24.            EXTI_InitStructure.EXTI_Line=EXTI_Line0;
  25.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  26.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
  27.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  28.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷


  29.    //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  30.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);

  31.            EXTI_InitStructure.EXTI_Line=EXTI_Line1;
  32.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  33.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  34.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  35.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷


  36.    //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  37.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);

  38.            EXTI_InitStructure.EXTI_Line=EXTI_Line2;
  39.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  40.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  41.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  42.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷


  43.    //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  44.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3);

  45.            EXTI_InitStructure.EXTI_Line=EXTI_Line3;
  46.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  47.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  48.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  49.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷

  50.    //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  51.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource4);

  52.            EXTI_InitStructure.EXTI_Line=EXTI_Line4;
  53.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  54.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  55.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  56.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷

  57.     //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖÃ
  58.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource5||GPIO_PinSource6|| GPIO_PinSource7||GPIO_PinSource8);

  59.            EXTI_InitStructure.EXTI_Line=EXTI_Line5;
  60.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  61.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  62.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  63.           EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷





  64.           NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  65.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2
  66.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  67.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  68.           NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
  69.                
  70.                
  71.                  
  72.           NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  73.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2
  74.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  75.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  76.           NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
  77.                
  78.                
  79.                  
  80.           NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  81.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2
  82.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  83.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  84.           NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
  85.                
  86.                
  87.                  
  88.           NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  89.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2
  90.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  91.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  92.           NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
  93.                
  94.                  
  95.           NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  96.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2
  97.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  98.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  99.           NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
  100.                
  101.                
  102.                
  103.                 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //ê1Äü°′¼üËùÔúμÄía2¿ÖD¶Ïí¨μà
  104.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏ輶2£¬
  105.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏ輶1
  106.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
  107.           NVIC_Init(&NVIC_InitStructure);




  108. }
复制代码
回复

使用道具 举报

4

主题

881

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4198
金钱
4198
注册时间
2019-9-4
在线时间
881 小时
发表于 2022-6-13 15:04:46 | 显示全部楼层
代码就懒得看了,有仿真器吗,仿真,然后在中断里面打个断点,看看能不能正常进中断服务函数,不能正常进的话,就是配置配错了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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