CUSTOMELECTRONICS.RU
Информационно-учебный блог о разработке электроники
Эл. почта: info@customelectronics.ru

STM32. Подключение кнопки

В этой статье мы сделаем еще один небольшой шаг в ознакомлении с возможностями микроконтроллеров STM32. А именно будем использовать выводы микроконтроллера в режиме входа.
Перед работой с этой статьей обязательно необходимо проделать задачу из предыдущего примера, в котором рассматривалась настройка среды и решалась задача с миганием светодиодом.
К счастью, именно эту задачу будет решить очень просто, действуя по той же схеме, что и ранее.
Так как мы используем готовую плату и заранее настроенный для нее в CubeMX проект, мы уже имеем физически подключенную голубую кнопку. Подключена она к выводу PC13. Последнее утверждение можно проверить на вкладке Pin Configuration в программе CubeMX.
Чтобы опросить состояние этой кнопки, в первую очередь, необходимо найти в файле драйвера с именем stm32f0xx_hal_gpio.c строку в которой описывается функция чтения состояния вывода HAL_GPIO_ReadPin(). Вот как выглядит эта функция:
3
Этой функции необходимо сообщить два параметра:

  1. Номер порта в формате GPIOx, где x — буквенное обозначение порта. В нашем случае это порт С
  2. Номер вывода в формате GPIO_PIN_x, где x — номер вывода. В нашем случае 13

В свою очередь она вернет нам ноль или единицу, в зависимости от того, нажата кнопка или нет. В основной программе нам остается только проверить условие, а затем включить или выключить светодиод, в зависимости от того истинно это условие или ложно.
Итоговый код программы выглядит следующим образом:
1
На всякий случай уточним что именно делает каждая из строчек кода.
Функция 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), которая выключает светодиод.
И вот так вот на максимальной скорости, без задержек, в бесконечном цикле контроллер будет включать или выключать светодиод. То есть пользователь будет видеть, что при нажатии на кнопку светодиод включается, а при ее отпускании — выключается.

Пользовательский светодиод на плате

Пользовательский светодиод на плате

Ссылки на остальные статьи цикла можно найти здесь.

Метки: , , , , , , , , Просмотров: 197

Error. Page cannot be displayed. Please contact your service provider for more details. (9)