如何使用一个中断处理来自多个按钮的输入?

How to handle input from multiple buttons using one interrupt?

我想知道如何制作 IRQ 处理程序,它可以在按下每个按钮时做出不同的反应。

我想这样做:

void EXTI9_5_IRQHandler(){
    if (EXTI_GetITStatus(EXTI_Line_5)){
        doThis();
    } else if (EXTI_GetITStatus(EXTI_Line_6)) {
        doThat();
    }
}

我不知道如何将多个按钮连接到一个中断,这是我最糟糕的问题:(

就是这个道理。我不太熟悉 std 外围设备,但我想知道 EXTI_GetFlagStatus 是否对你的情况更好。也不要忘记清除中断标志。

您的代码应如下所示:

void EXTI9_5_IRQHandler(){
    if (EXTI_GetITStatus(EXTI_Line_5)){
        EXTI_ClearFlag(EXTI_Line_5);
        doThis();
    } else if (EXTI_GetITStatus(EXTI_Line_6)) {
        EXTI_ClearFlag(EXTI_Line_6);
        doThat();
    }
}