Сообщение от Реостат
|
Добрый день.
...Не могу понять, как реализовать "зажатие" кнопки. Т.е. длительный процесс....Как обработчик прерывания правильно написать/сконфигурировать?
|
Тут уже выше всё ключевое прозвучало. Первое(чтоб не с граблей начинать) - проникнитесь темой дребезга контактов. Пока это не пощупаете - все Ваши алгоритмы будут на уровне пятиклассника.
вторую тему, я бы сразу обозвал - обработка нескольких клавиш(клавиатуры). Пускай это будет тупо несколько входов, а не матрица, пока.
сразу пишите по "взрослому" - нажатие, двойное нажатие, удержание(автоповтор клавиши), комбинация клавиш.
Если в рукопашную, чисто программно - то обычно прикрывают(как в писюке биос) тонким слоем обработчика аппаратуру(в данном случае обработчик прерывания). Ну и софтово разруливать состояния, функционал и внешний интерфейс (Ваш API).
Но можно и аппаратуру заставить выполнять какую-либо работу. Но это можно потом - более глубже задуматься, что можно "убрать в железо" мк.
обычно, чтоб отсечь дребезг - используют квантованный временной интервал. Обычно это один из таймеров.
И тут уже прозвучало замечание - для такой мощи как STM32F - делать на супер циклах можно в случае: когда Вы понимаете точно, что хотите добиться(в чём выигрыш). ну и в чём проигрыш конечно-же. Например: если Вы делаете на коленке чисто помигать светодиодами - тащить РТОС это явно перебор. А вот если это серьёзный распределённый проект(в котором сидят несколько программеров) - то использовать супер цикл= надо иметь веские аргументы.
удачи вам
(круглый)