Вот что интересно. Раньше использовал atmega328 и у меня энкодер работал без всякого debouncing. Работало тупо: смотрел на состояние второго пина при falling edge на первом (энкодер коротит pullUp пины на землю). Ну, всё как у всех.
А вот stm32F411re с тем же энкодером тупо не работает. Значения скачут очень рандомно (т.е. повернул ручку на одно деление, а в программе счётчик увеличивается сразу на 2-30). Причём, в лучшем случае удаётся читать показания при вращении в одну сторону, но не другую.
С чем может быть связано такое различие? Я вот подумал что питание и наводки вряд ли могут оказать какое-то влияение. Может, разница в частоте сказывается? Атмега на 8Mhz работала, а эта плата на 100MHz.