你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

外部中断唤醒停止模式问题

[复制链接]
zymwjm 提问时间:2018-6-26 18:24 /
同时配置了四个外部中断用于唤醒,其中一个中断唤醒后,就把其他中断也给唤醒了,比如说用EXTI_Line4唤醒,却同时触发唤醒EXTI_Line0 EXTI_Line1
void RCC_Config(void)
{


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB  , EXTI_PinSource4);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB  ,EXTI_PinSource3);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB  ,EXTI_PinSource1);
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB  ,EXTI_PinSource0);
       

}


void EXTI_Config(void)
{

                 NVIC_InitTypeDef NVIC_InitStructure;  
    EXTI_InitTypeDef EXTI_InitStructure;  
       
       
    //KEY 4
    NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);  
       
       
          EXTI_InitStructure.EXTI_Line = EXTI_Line4;  
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
    EXTI_Init(&EXTI_InitStructure);   
          //KEY 3
                NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);  
       
       
          EXTI_InitStructure.EXTI_Line = EXTI_Line3;  
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
    EXTI_Init(&EXTI_InitStructure);   
               
                //KEY 2
                NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);  
       
       
          EXTI_InitStructure.EXTI_Line = EXTI_Line1;  
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
    EXTI_Init(&EXTI_InitStructure);   
               
                //KEY 1
                NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);  
       
       
          EXTI_InitStructure.EXTI_Line = EXTI_Line0;  
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
    EXTI_Init(&EXTI_InitStructure);   

}




void Cma_exti_config(void)
{
        printf("\r\nCma_exti_config\r\n");
        GpioInit(&cam_key1,PTC_KEY1,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
        GpioInit(&cam_key2,PTC_KEY2,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
        GpioInit(&cam_key3,PTC_KEY3,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
        GpioInit(&cam_key4,PTC_KEY4,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
        RCC_Config();
        EXTI_Config();

       
}

收藏 评论2 发布时间:2018-6-26 18:24

举报

2个回答
zymwjm 回答时间:2018-6-26 18:29:11
其他处理函数同下

void EXTI4_IRQHandler( void )
{
    if( EXTI_GetITStatus( EXTI_Line4 ) != RESET )
    {
        EXTI_ClearITPendingBit( EXTI_Line4 );
                                SystemInit();
                                printf("\r\nEXTI4_IRQHandler\r\n");
                printf("\r\nEXTI_GetFlagStatus(EXTI_Line0)=%d\r\n",EXTI_GetFlagStatus(EXTI_Line0));
                       
                       
                                key_flag = true;
    }
               
               

       
       
               
               
}
大陶 回答时间:2018-6-27 18:33:42
看一下 是不是程序当中有关联其余几个外部中断,或者是硬件电路

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版