Отправка прерывания на кнопку пользователя [STM32Nucleo] - PullRequest
0 голосов
/ 01 марта 2019

Я использую NucleoF091RC, и я пытаюсь переключить один из светодиодных выводов нажатием кнопки пользователя (B1).

В настоящее время мой код работает, устанавливая вывод UserButton (вывод 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);
    }

Микроконтроллер ведет себя правильно: если я удерживаю кнопку пользователя, светодиод включается инаоборот.Однако в некоторых случаях происходит обратное: светодиод включается и остается включенным, и удержание кнопки выключает его, в основном изменяя намеченное поведение.

Я знаю, что это проблема, связанная с тактовым сигналом, и я былмне сказали использовать debouncer для его решения, но так как я новичок в полной мере, я понятия не имею, как этого добиться, несмотря на то, что я прочитал об этом несколько статей / просмотр веб-сайтов.

Пока лучшее, что я могпридумал добавить HAL_Delay внутри оператора if, но это полностью нарушает процесс и перестает работать.

...