OpenEdv-开源电子网

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

帮忙看下 为啥进不了中断

[复制链接]

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
发表于 2018-3-31 11:06:55 | 显示全部楼层 |阅读模式
void Int_Exit_Init()                 
{
        NVIC_InitTypeDef NVIC_InitStruct;
        GPIO_InitTypeDef GPIO_InitStruct;
        EXTI_InitTypeDef EXTI_InitStruct;
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO,ENABLE);
       
        KEY_Init();
       
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStruct);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
        EXTI_InitStruct.EXTI_Line =EXTI_Line3;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_Init(&EXTI_InitStruct);
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
        EXTI_InitStruct.EXTI_Line =EXTI_Line4;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_Init(&EXTI_InitStruct);
                //ò»oÅ3μλÅäÖÃ
        NVIC_InitStruct.NVIC_IRQChannel = EXTI4_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
        NVIC_Init(&NVIC_InitStruct);
                //¶toÅ3μλÅäÖÃ
        NVIC_InitStruct.NVIC_IRQChannel = EXTI3_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 11;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_Init(&NVIC_InitStruct);

}
//ò»oÅ3μλ
void EXTI4_IRQHandler()
{
        u8 i;
        delay_ms(10);
        if (key_times1 == 0)                                                                                                        //μúò»′ΰ′ÏÂÆô¶ˉ¼ü¼èëÃüÂë
        {
                LED1 = !LED1;
                keychuli1(0,0);
                times += 1;
                Tim3_Init(9999,7199);                                                                                //10Khz ¶¨ê±10s
                Motor_PWM(899,0);                                                                                                        //μç»úÕy×a£¬′æ3μ
        }
        if (times == 1)                                                                                                                //μú¶t′ΰ′ÏÂÑéÖ¤ÃüÂë
        {
                keychuli1(0,1);
                if(mima1[0] == mima2[0])
                {
                        Tim3_Init(9999,7199);                                                                //10Khz ¶¨ê±10s
                        Motor_PWM(899,0);                                                                                //μç»ú·′×a£¬è¡3μ
                        mima1[0]=0;                                                                                                        //Çå¿ÕÃüÂë
                        mima2[0]=0;
                }
                else
                {
                        for(i=3;i>0;i--)
                        {
                                LCD_ShowString(60,160,210,16,16,"Password error !");
                                LCD_ShowString(40,190,210,16,16,"Please inpue again!");               
                                keychuli1(0,1);
                                        if(mima1[0] == mima2[0])
                                        {
                                                Tim3_Init(9999,7199);                                                                //10Khz ¶¨ê±10s
                                                Motor_PWM(899,0);                                                                                //μç»ú·′×a£¬è¡3μ
                                                mima1[0]=0;                                                                                                        //Çå¿ÕÃüÂë
                                                mima2[0]=0;
                                                break;
                                        }
                        }
                }
                times -= 1;
        }
        EXTI_ClearITPendingBit(EXTI_Line4);
}

//¶toÅ3μλkey1
void EXTI3_IRQHandler()
{
        u8 i;
        delay_ms(10);
        if (key_times2 == 0)                                                                                                        //μúò»′ΰ′ÏÂÆô¶ˉ¼ü¼èëÃüÂë
        {
                LED0 = !LED0;
                keychuli1(1,0);
                times += 1;
                Tim3_Init(9999,7199);                                                                                        //10Khz ¶¨ê±10s
                Motor_PWM(899,0);                                                                                                        //μç»úÕy×a£¬′æ3μ
        }
        if (times == 1)                                                                                                                //μú¶t′ΰ′ÏÂÑéÖ¤ÃüÂë
        {
                keychuli1(1,1);
                if(mima1[1] == mima2[1])
                {
                        Tim3_Init(9999,7199);                                                                //10Khz ¶¨ê±10s
                        Motor_PWM(899,0);                                                                                //μç»ú·′×a£¬è¡3μ
                        mima1[1]=0;                                                                                                        //Çå¿ÕÃüÂë
                        mima2[1]=0;
                }
                else
                {
                        for(i=3;i>0;i--)
                        {
                                LCD_ShowString(60,160,210,16,16,"Password error !");       
                                LCD_ShowString(40,190,210,16,16,"Please inpue again!");       
                                keychuli1(1,1);
                                        if(mima1[1] == mima2[1])
                                        {
                                                Tim3_Init(9999,7199);                                                                //10Khz ¶¨ê±10s
                                                Motor_PWM(899,0);                                                                                //μç»ú·′×a£¬è¡3μ
                                                mima1[1]=0;                                                                                                        //Çå¿ÕÃüÂë
                                                mima2[1]=0;
                                                break;
                                        }
                        }
                }
                times -= 1;
        }
        EXTI_ClearITPendingBit(EXTI_Line3);
}


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

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2018-4-1
在线时间
9 小时
发表于 2018-4-2 11:08:23 来自手机 | 显示全部楼层
好像在中断函数开头有个if(EXTI_GetITStatus()!=RESET)吧
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-4-3 14:39:00 | 显示全部楼层
HUANG123456 发表于 2018-4-2 11:08
好像在中断函数开头有个if(EXTI_GetITStatus()!=RESET)吧

不是的,已经解决,多谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 08:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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