STM32. CMSIS #6. Устраняем дребезг кнопки

Поділитися
Вставка
  • Опубліковано 22 жов 2024

КОМЕНТАРІ • 21

  • @dobroliub1908
    @dobroliub1908 3 роки тому +1

    Свежачок поступил) Спасибо)) По сложившейся традиции ждём CMSIS)))

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      пожалуйста)) только этот ролик ведь и так на CMSIS)

    • @dobroliub1908
      @dobroliub1908 3 роки тому

      @@NRelectronics Ваша правда, думал одно написал другое)

    • @NRelectronics
      @NRelectronics  3 роки тому

      Ничего страшного, все мы люди и можем описаться/оговориться)

  • @openFrimeTv
    @openFrimeTv 3 роки тому +3

    я для кнопок использую банальное инкрементирование переменной в цикле. и когда оно достигло определенного значения, считаю кнопку нажатой)

    • @NRelectronics
      @NRelectronics  3 роки тому

      Тоже можно вполне.

    • @blastedfuse5541
      @blastedfuse5541 3 роки тому

      Переменная может накопиться дребезгом, нужно обнулять, а копить только в случае безперерывного нажатия. Более того, нужно подтверждать еще и отпускание кнопки, то есть принимать решение только после цикла КНОПКА ТОЧНО НАЖАТА - КНОПКА ТОЧНО ОТПУЩЕНА. Это избавит еще и от залипания кнопки.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Дребезгом 10000 или 100000 такого не будет. Поэтому есть инкремент и декремент. Интегрирующий вариант алгоритма крайне надежен.

  • @ИльясК-л7л
    @ИльясК-л7л 2 роки тому +1

    Спасибо за уроки. Небольшие замечания по поводу программы.
    1) Button_State = READ_BIT(GPIOB->IDR, GPIO_IDR_IDR3);
    Button_State принимает значения:
    0х00 - при нажатой кнопке,
    0х08 - при отжатой кнопке (это видно в отладчике).
    исходя из этого никогда не выполнится условие в обработчике Debounce_Handler:
    else
    {
    if(Button_State == 1)
    {
    return 0; //кнопка гарантированно отжата
    }
    }
    Правильнее заменить на if(Button_State != 0)
    2) В обработчике Debounce_Handler вторую проверку if(Button_State == 0) можно не делать:
    if(Button_State == 0)
    {
    if(Button_count

    • @NRelectronics
      @NRelectronics  2 роки тому

      Вы хорошо подошли к алгоритмы. Программа правильная, но могут быть и другие варианты, я об этом тоже говорил.

  • @ПавелЛобанов-ж3и

    Здравствуйте! Большое спасибо за видеоурок! Будет ли продолжение обучающих видео по данной библиотеке?

    • @NRelectronics
      @NRelectronics  Рік тому +1

      Здравствуйте. Да, конечно

  • @ИльяБолдырев-ж3р
    @ИльяБолдырев-ж3р 3 роки тому

    А не планируете снимать что нибудь по G0/4? Интересные и свежие линейки

    • @NRelectronics
      @NRelectronics  3 роки тому

      Желание есть, да и платки тоже. Смущает цена G4. Не сильно народная цена то.

  • @5erG0
    @5erG0 11 місяців тому

    а с HAL_GPIO_TOGGLE тоже будет работать?

    • @NRelectronics
      @NRelectronics  11 місяців тому

      Это библиотека Хал.

    • @5erG0
      @5erG0 11 місяців тому

      @@NRelectronics, этот алгоритм будет работать чтобы при нажатии светодиод переключал свое состояние? Один раз нажали - включился, второй раз нажали - выключился. Скорее всего нужно добавить защиту от удержания кнопки.

    • @NRelectronics
      @NRelectronics  11 місяців тому

      Нужно будет добавить защиту от дребезга. От удержания не надо, будет без неё работать.

  • @АбуЗаррФарадей
    @АбуЗаррФарадей 3 роки тому

    👍🏼

  • @evgenprofi2819
    @evgenprofi2819 3 роки тому

    👍👍👍