向用户按钮[STM32Nucleo]

时间:2019-03-01 10:11:25

标签: microcontroller interrupt stm32

我正在使用NucleoF091RC,并且试图通过按用户按钮(B1)来切换Led引脚之一。

当前,我的代码通过将用户按钮引脚(引脚13)设置为“具有上升沿/下降沿的外部中断模式”来工作,然后在main.c文件中添加了以下几行

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
        if(GPIO_Pin==GPIO_PIN_13)
          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
    }

微控制器的行为正确:如果我按住UserButton,LED会亮起,反之亦然。但是,有时会发生相反的情况:LED指示灯亮起并保持点亮状态,按住按钮将其熄灭,基本上可以逆转预期的行为。

我知道这是一个与时钟信号有关的问题,有人告诉我要使用去抖动器来解决它,但是由于我是一个完全的新手,所以尽管阅读了几篇文章,但我不知道如何实现/浏览有关此内容的网站。

到目前为止,我能想到的最好的方法是在if语句中添加HAL_Delay,但这会完全破坏该过程,并且使其停止工作。

0 个答案:

没有答案