STM32 CMSIS часть 3
STM32 CMSIS часть 3 Содержание: 00:06 Введение и цель видео • Работа с микроконтроллером F1 на регистрах с использованием библиотеки CMSIS. • Создание прошивки для кнопки, анализ состояния кнопки через логический анализатор. • Борьба с дребезгом контактов программным способом. 01:13 Логический анализатор и подключение кнопки • Использование логического анализатора для анализа выбросов после нажатия и отжатия кнопки. • Подключение кнопки к выводу B3 через резистор. • Два способа подключения кнопки: подтягивание к питанию или земле. 03:25 Проблемы с дребезгом контактов • Подтягивание кнопки к питанию через резистор для уменьшения дребезга. • Использование специализированных кнопок с графитовым напылением для предотвращения подгорания. • Программное устранение дребезга контактов в библиотеках, таких как PLASMA и Quartus. 05:14 Анализ дребезга контактов • Кнопка по умолчанию подтянута к питанию через резистор. • Анализ состояния кнопки до и после нажатия. • Использование логического анализатора для наблюдения за дребезгом контактов. 10:55 Настройка GPIO для кнопки • Подключение GPIO для входа и выхода. • Настройка битового поля для работы с кнопкой. • Использование таблицы состояний для выбора нужного состояния. 13:51 Программирование GPIO • Программирование GPIO для работы с кнопкой. • Включение тактирования и настройка битового поля. • Запись нулей и единиц в соответствующие биты для работы с кнопкой. 17:30 Настройка пина для кнопки • Настройка пина для кнопки: нулевой вывод как ноль, первый вывод как один. • Использование встроенного резистора для подтяжки кнопки к земле или питанию. • Подтяжка к питанию через резистор с сопротивлением 10 кОм для предотвращения проблем с состоянием вывода. 19:49 Проблемы с внутренней подтяжкой • Внутренняя подтяжка может не сработать из-за брака контроллеров или высокого сопротивления резисторов. • Внешняя подтяжка решает проблему, так как она более надежна и стабильна. 20:59 Настройка светодиода • Настройка светодиода: вывод 13 для светодиода, тактирование на 50 МГц. • Использование битового поля MOD для управления состоянием светодиода. • Включение светодиода через установку нуля в бите RESET. 24:07 Работа с портом B3 • Отключение использования внутреннего джетага для работы с портом B3. • Включение тактирования для порта B3 и установка нуля в соответствующем бите. 25:55 Использование регистра GPIO • Регистр GPIO для считывания состояния вывода порта. • Использование регистра для управления светодиодом: ноль включает, единица выключает. • Преимущества использования атомарных команд для установки состояния вывода. 30:04 Защита от дребезга контактов • Различные алгоритмы защиты от дребезга контактов. • Использование счетчика для анализа состояния кнопки и установки флага. • Алгоритм анализа состояния по таймеру и интегральной сумме для уверенного нажатия или отпускания кнопки. 34:47 Подготовка кода • Объявлены и инициализированы три переменные для состояния нажатия, счетчика нажатий и результата. • Объявлен и расписан обработчик прерывания для дребезга. • Обработчик принимает условия состояния кнопки и возвращает состояние. 36:37 Инициализация и отладка • Объявлены инициализации периферии и изменен цикл while. • Считывается состояние кнопки и заносится в переменную. • Алгоритм немного изменен для работы с дребезгом. 38:37 Тестирование под отладкой • Кнопка не нажата, возвращается ноль. • При нажатии кнопки счетчик увеличивается, но светодиод не включается. • При достижении значения три светодиод включается. 42:14 Имитация отключения • При имитации отключения кнопка возвращается в исходное состояние. • Значение счетчика уменьшается, светодиод продолжает светиться. • Алгоритм интегрирует значения для гарантированного включения или выключения. 44:53 Тестирование с реальными значениями • Значение счетчика увеличено до тысячи для более точного определения дребезга. • При увеличении значения до ста тысяч задержка включения светодиода увеличивается. • При значении десять тысяч дребезг отсутствует, кнопка работает стабильно. 48:19 Заключение • Решение на основе суммирования и инкрементирования значений счетчика. • Возможность использования таймера для более точного определения дребезга. • Способ не сильно увеличивает время запуска, но гарантирует стабильную работу.
STM32 CMSIS часть 3 Содержание: 00:06 Введение и цель видео • Работа с микроконтроллером F1 на регистрах с использованием библиотеки CMSIS. • Создание прошивки для кнопки, анализ состояния кнопки через логический анализатор. • Борьба с дребезгом контактов программным способом. 01:13 Логический анализатор и подключение кнопки • Использование логического анализатора для анализа выбросов после нажатия и отжатия кнопки. • Подключение кнопки к выводу B3 через резистор. • Два способа подключения кнопки: подтягивание к питанию или земле. 03:25 Проблемы с дребезгом контактов • Подтягивание кнопки к питанию через резистор для уменьшения дребезга. • Использование специализированных кнопок с графитовым напылением для предотвращения подгорания. • Программное устранение дребезга контактов в библиотеках, таких как PLASMA и Quartus. 05:14 Анализ дребезга контактов • Кнопка по умолчанию подтянута к питанию через резистор. • Анализ состояния кнопки до и после нажатия. • Использование логического анализатора для наблюдения за дребезгом контактов. 10:55 Настройка GPIO для кнопки • Подключение GPIO для входа и выхода. • Настройка битового поля для работы с кнопкой. • Использование таблицы состояний для выбора нужного состояния. 13:51 Программирование GPIO • Программирование GPIO для работы с кнопкой. • Включение тактирования и настройка битового поля. • Запись нулей и единиц в соответствующие биты для работы с кнопкой. 17:30 Настройка пина для кнопки • Настройка пина для кнопки: нулевой вывод как ноль, первый вывод как один. • Использование встроенного резистора для подтяжки кнопки к земле или питанию. • Подтяжка к питанию через резистор с сопротивлением 10 кОм для предотвращения проблем с состоянием вывода. 19:49 Проблемы с внутренней подтяжкой • Внутренняя подтяжка может не сработать из-за брака контроллеров или высокого сопротивления резисторов. • Внешняя подтяжка решает проблему, так как она более надежна и стабильна. 20:59 Настройка светодиода • Настройка светодиода: вывод 13 для светодиода, тактирование на 50 МГц. • Использование битового поля MOD для управления состоянием светодиода. • Включение светодиода через установку нуля в бите RESET. 24:07 Работа с портом B3 • Отключение использования внутреннего джетага для работы с портом B3. • Включение тактирования для порта B3 и установка нуля в соответствующем бите. 25:55 Использование регистра GPIO • Регистр GPIO для считывания состояния вывода порта. • Использование регистра для управления светодиодом: ноль включает, единица выключает. • Преимущества использования атомарных команд для установки состояния вывода. 30:04 Защита от дребезга контактов • Различные алгоритмы защиты от дребезга контактов. • Использование счетчика для анализа состояния кнопки и установки флага. • Алгоритм анализа состояния по таймеру и интегральной сумме для уверенного нажатия или отпускания кнопки. 34:47 Подготовка кода • Объявлены и инициализированы три переменные для состояния нажатия, счетчика нажатий и результата. • Объявлен и расписан обработчик прерывания для дребезга. • Обработчик принимает условия состояния кнопки и возвращает состояние. 36:37 Инициализация и отладка • Объявлены инициализации периферии и изменен цикл while. • Считывается состояние кнопки и заносится в переменную. • Алгоритм немного изменен для работы с дребезгом. 38:37 Тестирование под отладкой • Кнопка не нажата, возвращается ноль. • При нажатии кнопки счетчик увеличивается, но светодиод не включается. • При достижении значения три светодиод включается. 42:14 Имитация отключения • При имитации отключения кнопка возвращается в исходное состояние. • Значение счетчика уменьшается, светодиод продолжает светиться. • Алгоритм интегрирует значения для гарантированного включения или выключения. 44:53 Тестирование с реальными значениями • Значение счетчика увеличено до тысячи для более точного определения дребезга. • При увеличении значения до ста тысяч задержка включения светодиода увеличивается. • При значении десять тысяч дребезг отсутствует, кнопка работает стабильно. 48:19 Заключение • Решение на основе суммирования и инкрементирования значений счетчика. • Возможность использования таймера для более точного определения дребезга. • Способ не сильно увеличивает время запуска, но гарантирует стабильную работу.
