Это видео недоступно.
Сожалеем об этом.

Подключение кнопок к микроконтроллеру STM32: устранение дребезга, автоповтор, буферизованный ввод

Поделиться
HTML-код
  • Опубликовано: 27 май 2022
  • В этом видео расскажу о том, как грамотно подключить кнопки к микроконтроллеру STM32. Привожу свой модуль работы с кнопками. Возможности модуля:
    - Поддержка до 32 кнопок, с учетом того, что на 1 кнопку выделяется 1 вывод микроконтроллера, настроенный на вход с подтяжкой по питанию.
    - Доступна настройка фильтра устранения дребезга.
    - Доступен буфер состояний кнопок с настраиваемой глубиной.
    - Доступна настройка периодов задержки до первого автоповтора нажатия кнопок и последующих автоповторов.
    - Доступно добавление кнопок для опроса посредством вызова соответствующей функции.
    - Доступна установка статусов кнопки: "активна" - участвует в опросе, "пассивна" - не участвует в опросе.
    - Доступен опрос статуса кнопки (активна либо пассивна).
    Выводы микроконтроллера, к которым подключаются кнопки должны быть настроены, как входы с подтяжкой по питанию. Как вариант, с использованием внутренней подтяжки микроконтроллера pull-up, либо внешней через подтягивающий резистор, например, номиналом 10 кОм.
    При нажатии кнопки должна осуществляется притяжка входа микроконтроллера к "земле" (GND).
    Для работы модуля требуется 1 таймер с настроенным прерыванием по обновлению.
    Путем несложной модификации модуль возможно использовать на любых микроконтроллерах, отвечающих минимальным требованиям.
    Скачать проект из видео можно по ссылке:
    github.com/vad...
    Поддержать канал:
    donate.qiwi.co...
    yoomoney.ru/to...
    Покупал на Алиэкспресс:
    программатор ST-Link alii.pub/6fdujg
    плата разработки stm32f401ccu6 alii.pub/6fdumy
    плата разработки stm32f411ceu6 alii.pub/6fduop
    аудио-ЦАП pcm5102a alii.pub/6fdurf
    макетная плата alii.pub/6fduuq
    провода для макетной платы alii.pub/6fduwo
    3.2" дисплей с тачскрином ILI9341 spi alii.pub/6fdvcf
    1.3" дисплей ST7789 spi alii.pub/6fdvks
    модуль микро SD карты alii.pub/6fdvoh
    #stm32
    #buttons
    #программирование

Комментарии • 20

  • @VadRov
    @VadRov  2 года назад

    Проект из видео на гитхабе: github.com/vadrov/stm32-button-nobounce-autorepeat-buffer
    Подключение дисплея st7789 по spi c dma на CMSIS и LL рассмотрено в видео ruclips.net/video/8tIJ16riJqo/видео.html
    Подключение SD-карты по spi с dma на CMSIS и LL рассмотрено в видео ruclips.net/video/z99bLhlnukM/видео.html
    Подключение кнопок на таймере с прерыванием на CMSIS и LL с устранением дребезга, автоповтором и буферов ввода (прямо как на PC 😉) рассмотрено в видео ruclips.net/video/e-w5HS75neg/видео.html
    Файловый менеджер (структура и код) рассмотрен в видео ruclips.net/video/4c_PwnasQvs/видео.html
    Подключение аудио-цап (audio dac) по интерфейсу i2s на CMSIS и LL рассмотрено в видео ruclips.net/video/p0IhX-XiiiQ/видео.html
    К каждому из перечисленных видео есть ссылка в описании на проект для скачивания.
    Поддержать канал:
    donate.qiwi.com/payin/VadRov
    yoomoney.ru/to/4100117522443917
    Покупал на Алиэкспресс:
    программатор ST-Link alii.pub/6fdujg
    плата разработки stm32f401ccu6 alii.pub/6fdumy
    плата разработки stm32f411ceu6 alii.pub/6fduop
    аудио-ЦАП pcm5102a alii.pub/6fdurf
    макетная плата alii.pub/6fduuq
    провода для макетной платы alii.pub/6fduwo
    3.2" дисплей с тачскрином ILI9341 spi alii.pub/6fdvcf
    1.3" дисплей ST7789 spi alii.pub/6fdvks
    модуль микро SD карты alii.pub/6fdvoh

  • @user-hh1vp6vt8w
    @user-hh1vp6vt8w 2 года назад +2

    Крепко вы прошлись по демонстрации возможностей работы с этим мк...! ;)
    Спасибо!

  • @NoName-dj6bd
    @NoName-dj6bd 12 дней назад

    Дребезг кнопок устраняется аппаратно. Пикушкой 220-680 пф на порту мк и резистором 10 ом, между портом и кнопкой. Экономия кода 100%. 👍

    • @VadRov
      @VadRov  11 дней назад

      Не уверен, что это решение обеспечивает 100% гарантию подавления дребезга. Все немного сложнее в аппаратном плане. Ну, и, если обратили внимание, тут не просто подавление дребезга, но и буферизация ввода, что позволяет, например, обрабатывать очередь событий. 🙂

    • @NoName-dj6bd
      @NoName-dj6bd 11 дней назад

      @@VadRov Этот метод прверен десятилетиями. Его в пособиях по программированию МК не раз публиковали. Я даже счётчик нажатий собирал для проверки. Из пару сотен нажатий ни одно сбоя.

  • @user-hk5vg9jj9g
    @user-hk5vg9jj9g 5 месяцев назад

    Класс виде подписка и лайкосик

  • @avr_stm_pro2955
    @avr_stm_pro2955 5 месяцев назад

    Спасибо 👍👍👍👍

  • @kokotmkokot4926
    @kokotmkokot4926 Год назад

    Спасибо, очень достойный алгоритм! Позволю себе пару предложений к усовершенствованию. Иногда на одну физическую кнопку целесообразно вешать две функции. Одна срабатывает при коротком одиночном нажатии по отжатию кнопки (как пример кнопки мышки). Вторая функция - при длительном удержании кнопки. Этот алгоритм позволяет упростить конечное устройство.

  • @alexshu1609
    @alexshu1609 Год назад

    Не давно обнаружил в телике кнопку для управления, до этого только пультом пользовались не было необходимости . Карл 1 кнопка на весь телик. Кнопка которая не фига не джойстик, хоть в другом телике джойстик под кнопку замаскирован, но джойстик, который по факту 4-5 кнопок Переключение каналов, звук больше меньше, меню и настройка осуществляется 1короткое ВВЕРХ 2коротких ВНИЗ 1длинный ВЫБОР. При необходимости можно еще всякий функционал навешать разных комбинаций нажатий.

    • @VadRov
      @VadRov  Год назад +1

      Долго такая кнопка не проживет 🙂 1короткое ВВЕРХ 2коротких ВНИЗ 1длинный ВЫБОР... И так в течение месяца. А на следующий месяц кнопку перепаивать. 🙂Оптимально, думаю, для любого устройства 5 кнопок либо джойстик, либо энкодер. А так, конечно, проблем не вижу навесить на одну кнопку 100 функций. И "букварь" к этой кнопке в придачу с последовательностью "коротких и длинных". С точки зрения сервисных функций, кстати, такая 1 кнопка хороший вариант, но на повседнев - тоска. 🙂

    • @alexshu1609
      @alexshu1609 Год назад

      @@VadRov На повседнев пульт 😁. А так как идея для самоделок сгодится. Если не часто нужно что-то включать. Разрабы для блекпил вкарячили - и не зря периодически пользую , правда без двойных и всяких остальных нажатий . Кстати у мышки Левая кнопка годами работает одинарными и двойными кликами , а то и тройными - если нужна сверхнадежная кнопка. А уж если начала косячить меняют местами правую и левую кнопки . Пацанам в кружке ,когда приобщал школту к МК через Ардуино, дал поизголятся они текст набирали при помощи 1 кнопки и переменного резистора. 😁

  • @allallall2321
    @allallall2321 2 года назад +1

    Stm32f401 прога не ругается на не подлиность клонов с Алишки и как у Вас все функции заявленные по даташнику работают?

    • @VadRov
      @VadRov  2 года назад +1

      Не ругается. Все функции (периферия, вводы/выводы, NVIC, DMA, таймеры и пр.) работают, в т.ч. совместно. С виду чип, вроде, оригинальный. Заказал 411, протестил, тоже все работает. Признаков "левой " маркировки/перемаркировки не замечено. Я даже 401 чип разгонял до 130 МГц, по-моему, все работало)) В сети видел с Алишки перемаркер, но там откровенно все видно (спил/шлифовку и пр.). Кстати, 411 хорошо шьется, в т.ч. по USB, а 401 - через раз по USB и без проблем по ST-Link.

    • @allallall2321
      @allallall2321 2 года назад

      @@VadRov спасибо, понял)

  • @Violancergta
    @Violancergta Год назад

    Что делать с шумами на пине во время спада или нарастания импульса ?
    Именно эти шумы генерять сотни прерываний а не дребзг кнопки.

    • @VadRov
      @VadRov  Год назад

      Если Вы смотрели видео, то должны были обратить внимание, что я в этом проекте вообще не использую внешних прерываний. Здесь используются только прерывание от одного таймера, которое обслуживает до 32 кнопок. Основа работы фильтра - постоянство сигнала на некотором участке времени, за который гарантированно затухают переходные процессы и который, естественно, больше длительности этих переходных процессов. Если Вы используете внешние прерывания (exti) в своем проекте, то Вы должны позаботиться об управлении их включением и выключением, чтобы не генерировались "сотни прерываний". Как это сделать, можно посмотреть, например, в моем проекте о подключении дисплея с тачскрином, в котором касание экрана отрабатывается по внешнему прерыванию по спадающему фронту. Там как раз и решается проблема возможности "сотни прерываний", которая может возникнуть как при касании, так и при отпускании сенсора дисплея: ruclips.net/video/iDFTmKkWJF4/видео.html Если Вы внимательно посмотрите видео и почитаете комментарии к проекту, который доступен на гитхабе (по ссылке к описанию видео), то поймете как решить проблему "сотен прерываний".

  • @user-rf1yx4kp4r
    @user-rf1yx4kp4r 9 месяцев назад

    Только не 5 вольт ,а до 3.3в.

    • @VadRov
      @VadRov  9 месяцев назад +1

      Если имелся ввиду момент в видео на 3:21, то, да, применительно к stm32 включение встроенной подтяжки входа к питанию дает до 3.3 В (ограничено напряжением питания м/к) на нем.

    • @user-rf1yx4kp4r
      @user-rf1yx4kp4r 9 месяцев назад

      @@VadRov посоветуйте пожалуйста литературу по STM32.

    • @VadRov
      @VadRov  9 месяцев назад +1

      @@user-rf1yx4kp4r , лично я знакомлюсь в основном только с официальными источниками, т.е. материалами на сайтах компаний STMicroelectronics и ARM. Этих данных, в принципе, достаточно для человека, имеющего некоторый базовый минимум в программировании и электронике.
      Микроконтроллеры лучше изучать по мануалу (Reference Manuals) от производителя, т.е. ST.