OpenEdv-开源电子网

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

中断5——9的配置。

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-3-18
在线时间
5 小时
发表于 2017-5-1 20:18:00 | 显示全部楼层 |阅读模式
3金钱
使用stm32中断函数,配置按键分别为PA0,PC13,PA8,PD3。进行如下配置之后,发现PA0和PD3按键可以正常工作,PA8和PC13不但不能正常使用,一旦按过之后,连PA0和PD3也不能正常工作了。中断向量5-9是共用一个,10-15是共用一个的,所以在5-9中我要具体使用哪个是否需要另行配置?
中断配置如下:




void EXTIX_Init(void)
{

        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

    KEY_Init();         //        °′¼ü¶Ë¿ú3õê¼»ˉ

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //ê1Äü¸′óÃ1|Äüê±Öó

  //GPIOC.13 ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖà  Ï½μÑØ′¥·¢
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13);

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

//GPIOD.3          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖà ϽμÑØ′¥·¢ //KEY1
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);
          EXTI_InitStructure.EXTI_Line=EXTI_Line3;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_Init(&EXTI_InitStructure);                  //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷




  //GPIOA.0          ÖD¶ÏÏßòÔ¼°ÖD¶Ï3õê¼»ˉÅäÖà ϽμÑØ′¥·¢ PA0  WK_UP
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);

        EXTI_InitStructure.EXTI_Line=EXTI_Line0;
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
          EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷
        //        PA8
                GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);


        EXTI_InitStructure.EXTI_Line=EXTI_Line8;

          EXTI_Init(&EXTI_InitStructure);                //¸ù¾YEXTI_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèEXTI¼Ä′æÆ÷


          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                        //ê1Äü°′¼üWK_UPËùÔúμÄía2¿ÖD¶Ïí¨μà
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏè¼¶2£¬
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;                                        //×óóÅÏè¼¶3
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
          NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;                        //ê1Äü°′¼üKEY2ËùÔúμÄía2¿ÖD¶Ïí¨μà
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏè¼¶2£¬
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                        //×óóÅÏè¼¶2
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
          NVIC_Init(&NVIC_InitStructure);


          NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //ê1Äü°′¼üKEY1ËùÔúμÄía2¿ÖD¶Ïí¨μà
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏè¼¶2
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                                        //×óóÅÏè¼¶1
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
          NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷

        NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;                        //ê1Äü°′¼üKEY0ËùÔúμÄía2¿ÖD¶Ïí¨μà
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;        //ÇàÕ¼óÅÏè¼¶2
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;                                        //×óóÅÏè¼¶0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1Äüía2¿ÖD¶Ïí¨μà
          NVIC_Init(&NVIC_InitStructure);            //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷

}

//ía2¿ÖD¶Ï0·tÎñ3ìDò
void EXTI0_IRQHandler(void)
{
        delay_ms(10);//Ïû¶¶
        if(KEY0==0)                  //WK_UP°′¼ü
        {                                 
                led2=!led2;       
               
        }
        EXTI_ClearITPendingBit(EXTI_Line0); //Çå3yLINE0éÏμÄÖD¶Ï±ê־λ  
}

//ía2¿ÖD¶Ï2·tÎñ3ìDò
void EXTI3_IRQHandler(void)
{
        delay_ms(10);//Ïû¶¶
        if(KEY3==0)          //°′¼üKEY2
        {
        led0=!led0;
               
        }                 
        EXTI_ClearITPendingBit(EXTI_Line3);  //Çå3yLINE2éÏμÄÖD¶Ï±ê־λ  
}
//ía2¿ÖD¶Ï8·tÎñ3ìDò
void EXTI8_IRQHandler(void)
{
        delay_ms(10);//Ïû¶¶
        if(KEY2==0)         //°′¼üKEY1
        {                                 
        led1=!led1;
       
        }                 
        EXTI_ClearITPendingBit(EXTI_Line8);  //Çå3yLINE8éÏμÄÖD¶Ï±ê־λ  
}

void EXTI13_IRQHandler(void)
{
        delay_ms(10);//Ïû¶¶
        if(KEY1==0)         //°′¼üKEY0
        {
                led0=!led0;
                led1=!led1;
        }                 
        EXTI_ClearITPendingBit(EXTI_Line13);  //Çå3yLINE4éÏμÄÖD¶Ï±ê־λ  
}



最佳答案

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

void EXTI8_IRQHandler(void) void EXTI13_IRQHandler(void) 这两个中断入口函数看一下!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2017-5-1 20:18:01 | 显示全部楼层
void EXTI8_IRQHandler(void)
void EXTI13_IRQHandler(void)
这两个中断入口函数看一下!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-2 00:22:17 | 显示全部楼层
仿真找问题了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 20:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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