【问题标题】:Nucleo F401RE - Interrupt not workingNucleo F401RE - 中断不起作用
【发布时间】:2017-09-05 15:44:01
【问题描述】:

我的 Nucleo F401RE 有问题:当我尝试通过更改 PA9 上的值来触发中断时,没有任何反应:(

我的代码:

void EXTI_Config(){

    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource6);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource7);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource8);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource9);
    EXTI_InitTypeDef buttonEXTI;
    EXTI_StructInit(&buttonEXTI);
    buttonEXTI.EXTI_Line = 0x1E0;
    buttonEXTI.EXTI_Mode = EXTI_Mode_Interrupt;
    buttonEXTI.EXTI_Trigger = EXTI_Trigger_Rising;
    buttonEXTI.EXTI_LineCmd = ENABLE;
    EXTI_Init(&buttonEXTI);

    NVIC_InitTypeDef buttonNVIC;

    buttonNVIC.NVIC_IRQChannel = EXTI9_5_IRQn;
    buttonNVIC.NVIC_IRQChannelPreemptionPriority = 1;
    buttonNVIC.NVIC_IRQChannelSubPriority = 0;
    buttonNVIC.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&buttonNVIC);

    EXTI_ClearFlag(0x1E0);
}

void EXTI9_5_IRQHandler(){
    if(EXTI_GetFlagStatus(EXTI_Line6)==SET){ //works
        EXTI_ClearITPendingBit(EXTI_Line6);
        if (mode==0&&isTimeSet){
            mode=1;
        } else if(mode==1){
            mode=2;
        } else {
            mode=1;
        }
    } else if (EXTI_GetFlagStatus(EXTI_Line7)==SET){ //works
        EXTI_ClearITPendingBit(EXTI_Line7);
        changeValue=2;
    } else if (EXTI_GetFlagStatus(EXTI_Line8)==SET){ //works
        EXTI_ClearITPendingBit(EXTI_Line8);
        changeValue=1;
    } else if (EXTI_GetFlagStatus(EXTI_Line9)==SET){ //don't work :(
        EXTI_ClearITPendingBit(EXTI_Line9);
        settingsApplied=1;
    }
}

其他所有中断都像魅力一样,但这个 - 不要。在电路板的示意图中,此引脚未插入,所以我不知道为什么会发生这种情况:(

【问题讨论】:

    标签: interrupt stm32f4 nucleo


    【解决方案1】:

    我认为下面一行有问题

    buttonEXTI.EXTI_Line = 0x1E0;
    

    你的掩码必须是 0x03C0

    为避免类似的错误,您可以使用以下方法:

    buttonEXTI.EXTI_Line = EXTI_Line6 | EXTI_Line7 | EXTI_Line8 | EXTI_Line9;
    

    【讨论】:

    • 嗨。我在哪里可以按照这种操作的教程?我只使用mbed库,但我想学习这种地址,你知道...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2017-05-18
    • 2021-09-29
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多