Переменная может накопиться дребезгом, нужно обнулять, а копить только в случае безперерывного нажатия. Более того, нужно подтверждать еще и отпускание кнопки, то есть принимать решение только после цикла КНОПКА ТОЧНО НАЖАТА - КНОПКА ТОЧНО ОТПУЩЕНА. Это избавит еще и от залипания кнопки.
Спасибо за уроки. Небольшие замечания по поводу программы. 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, этот алгоритм будет работать чтобы при нажатии светодиод переключал свое состояние? Один раз нажали - включился, второй раз нажали - выключился. Скорее всего нужно добавить защиту от удержания кнопки.
Свежачок поступил) Спасибо)) По сложившейся традиции ждём 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, этот алгоритм будет работать чтобы при нажатии светодиод переключал свое состояние? Один раз нажали - включился, второй раз нажали - выключился. Скорее всего нужно добавить защиту от удержания кнопки.
Нужно будет добавить защиту от дребезга. От удержания не надо, будет без неё работать.
👍🏼
👍👍👍
👍