Механическая кнопка не формирует идеальный фронт. Контакты подпрыгивают, поэтому вход видит серию коротких импульсов. Если сразу привязать кнопку к прерыванию без фильтрации, одно нажатие может стать десятком событий.
Есть несколько инженерных решений: RC-фильтр, триггер Шмитта, программное окно debounce, опрос таймером, фиксация фронта и игнорирование повторов до стабилизации. Выбор зависит от скорости реакции, энергопотребления и надёжности.
Этот пример показывает общий принцип embedded: физический мир шумный, а firmware должна проектироваться с учётом реального сигнала.