STM32. CMSIS #6. Устраняем дребезг кнопки
ฝัง
- เผยแพร่เมื่อ 6 พ.ค. 2021
- Продолжение предыдущего видео. В реализованном проекте по работе кнопки мы реализовываем алгоритм борьбы с дребезгом кнопки, сначала в виде блок-схем, а потом и в коде на языке Си. Также подробно рассмотрим работу алгоритма в режиме отладки микроконтроллера по шагам с множественными пояснениями.
Скачать проект можно из соответствующего урока:
github.com/nr-electronics/CMS...
__________________________________________________
Вы можете помочь каналу через Яндекс-деньги:
money.yandex.ru/to/4100115727...
или через банковскую карту:
4377 7237 6190 5714
__________________________________________________
Свежачок поступил) Спасибо)) По сложившейся традиции ждём CMSIS)))
пожалуйста)) только этот ролик ведь и так на CMSIS)
@@NRelectronics Ваша правда, думал одно написал другое)
Ничего страшного, все мы люди и можем описаться/оговориться)
я для кнопок использую банальное инкрементирование переменной в цикле. и когда оно достигло определенного значения, считаю кнопку нажатой)
Тоже можно вполне.
Переменная может накопиться дребезгом, нужно обнулять, а копить только в случае безперерывного нажатия. Более того, нужно подтверждать еще и отпускание кнопки, то есть принимать решение только после цикла КНОПКА ТОЧНО НАЖАТА - КНОПКА ТОЧНО ОТПУЩЕНА. Это избавит еще и от залипания кнопки.
Дребезгом 10000 или 100000 такого не будет. Поэтому есть инкремент и декремент. Интегрирующий вариант алгоритма крайне надежен.
Спасибо за уроки. Небольшие замечания по поводу программы.
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
Вы хорошо подошли к алгоритмы. Программа правильная, но могут быть и другие варианты, я об этом тоже говорил.
Здравствуйте! Большое спасибо за видеоурок! Будет ли продолжение обучающих видео по данной библиотеке?
Здравствуйте. Да, конечно
👍🏼
В качестве эксперимента можно было несколько разных кнопок из Китая соединить в параллель и завести их на прерывание и счетчик. При нажатии или отжатии кнопки считать время между прерываниями, а в счетчике смотреть сколько нажатий зафиксировано. И выводить все это в ком порт или на дисплей. Так было бы нагляднее, чем с анализатором.
Не соглашусь. Нагляднее визуальной информации нет ничего. Потом сказали бы зрители что непонятно что выводил цифрами)) Тут народ такой.
👍👍👍
👍
А не планируете снимать что нибудь по G0/4? Интересные и свежие линейки
Желание есть, да и платки тоже. Смущает цена G4. Не сильно народная цена то.
а с HAL_GPIO_TOGGLE тоже будет работать?
Это библиотека Хал.
@@NRelectronics, этот алгоритм будет работать чтобы при нажатии светодиод переключал свое состояние? Один раз нажали - включился, второй раз нажали - выключился. Скорее всего нужно добавить защиту от удержания кнопки.
Нужно будет добавить защиту от дребезга. От удержания не надо, будет без неё работать.