STM32. Подключение кнопки
В этой статье мы сделаем еще один небольшой шаг в ознакомлении с возможностями микроконтроллеров STM32. А именно будем использовать выводы микроконтроллера в режиме входа.
Перед работой с этой статьей обязательно необходимо проделать задачу из предыдущего примера, в котором рассматривалась настройка среды и решалась задача с миганием светодиодом.
К счастью, именно эту задачу будет решить очень просто, действуя по той же схеме, что и ранее.
Так как мы используем готовую плату и заранее настроенный для нее в CubeMX проект, мы уже имеем физически подключенную голубую кнопку. Подключена она к выводу PC13. Последнее утверждение можно проверить на вкладке Pin Configuration в программе CubeMX.
Чтобы опросить состояние этой кнопки, в первую очередь, необходимо найти в файле драйвера с именем stm32f0xx_hal_gpio.c строку в которой описывается функция чтения состояния вывода HAL_GPIO_ReadPin(). Вот как выглядит эта функция:
Этой функции необходимо сообщить два параметра:
- Номер порта в формате GPIOx, где x — буквенное обозначение порта. В нашем случае это порт С
- Номер вывода в формате GPIO_PIN_x, где x — номер вывода. В нашем случае 13
В свою очередь она вернет нам ноль или единицу, в зависимости от того, нажата кнопка или нет. В основной программе нам остается только проверить условие, а затем включить или выключить светодиод, в зависимости от того истинно это условие или ложно.
Итоговый код программы выглядит следующим образом:
На всякий случай уточним что именно делает каждая из строчек кода.
Функция HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) после вызова возвращает нам значение, которое тут же инвертируется при помощи оператора "!". Если функция вернула значение ноль (то есть кнопка нажата), то ноль инвертируется в единицу и условие становится истинным и при помощи вызова функции HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET) включается светодиод на плате.
Если кнопка не нажата, то условие ложно и выполняется функция HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET), которая выключает светодиод.
И вот так вот на максимальной скорости, без задержек, в бесконечном цикле контроллер будет включать или выключать светодиод. То есть пользователь будет видеть, что при нажатии на кнопку светодиод включается, а при ее отпускании — выключается.
Ссылки на остальные статьи цикла можно найти здесь.
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Метки: button, CubeMX, HAL, Keil, Nucleo, STM32, кнопка, курс, тактовая Просмотров: 21318