STM32 Обработка кнопки с антидребезгом без использования прерываний.

KakaiDiemon

✩✩✩✩✩✩✩
2 Мар 2026
1
0
Всем привет, учусь программировать мк stm32, хоть больше люблю плисины. Полистал примеры с антидребезгом и не очень они мне зашли и я решил попробовать реализовать по-другому таким кодом в бесконечном цикле без использования прерываний:

button = (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11) == GPIO_PIN_SET);
if (button != last_button) {
start_timer = HAL_GetTick();
}
else if (HAL_GetTick() - start_timer >= 50) {
debounced_button = button;
start_timer = HAL_GetTick();
}
debounced_last_button = debounced_button;
last_button = button;

Насколько это костыльно реализовано и какие подводные камни у такого антидребезга?
 

Сотнег

★★★★★★★
15 Янв 2020
4,627
1,564
@KakaiDiemon,
это не антидребезг, а фильтр кратковременных нажатий.

Стоит начать не с примеров кода, а с описания сути решаемой проблемы.