Кнопка stm32: Библиотека Button для обработки нажатий кнопок на STM32. KY-004.
|Содержание
STM32:Основы — GPIO:Практика — Мигание светодиодами и обработка нажатия кнопки (C) — Cybergnosis.su
Автор СергейОпубликовано Рубрики STM32, STM32:Основы
В этой заметке можно найти практическое применение теории, описанной в предыдущей записи, а именно, разбирается пример кода на языке Си, показывающий, как можно устанавливать и считывать значения на пинах портов GPIO, и что с этим можно делать. Для начала, техническое задание, показывающее то, что должно получиться при загрузке прошивки, собранной из приводимого ниже кода, в МК на плате STM32F4DISCOVERY.
Техническое задание
Разработать программное обеспечение на языке Си, предназначенное для загрузки в МК STM32F407VGT6, установленный на отладочной плате STM32F4DISCOVERY. ПО должно обеспечивать следующую функциональность:
- Поочерёдное включение/выключение расположенных на плате пользовательских светодиодов, как по часовой, так и против часовой стрелке.
- Изменение направления переключения светодиодов должно осуществляться при нажатии и последующем отпускании пользовательской кнопки.
Создание/получение проекта
Если Вы уже клонировали Git-репозиторий, как это было описано в заметке о настройке ПО, можете проапдейтить проект, зайдя из консоли командной строки в его корневую папку и набрав там:
git pull
если же нет, то можете клонировать его, как там описано, или же, создать проект с нуля, как описано в заметке о создании проекта CoIDE. Я решил несколько изменить структуру для размещения примеров в репозитории. Помещённый ранее пример по прежнему доступен как lab1, так как он уже упоминался в заметке о проверке конфигурации. Код для приводимого здесь примера находится в папке stm32_base/gpio/leds_button/leds_button_c/. Остальные примеры планируется размещать придерживаясь такой же структуры.
В проект должны быть включены все периферийные компоненты, которые были указаны при описании создания проекта. Если про какой-либо забудете, проект не собирётся, и компилятор в консоли CoIDE выдаст сообщение об отсутствии определения каких-либо программных сущностей.
Получение справки по используемым функциям, структурам и константам
Приводимый ниже код, на мой взгляд, достаточно подробно комментирован. Поэтому подробно разбирать отдельно я его не буду, а приведу лишь блок-схему его работы. Подробнее узнать об использованных функциях, структурах и константах можно воспользовавшись системой помощи CoIDE. Как уже было описано, на вкладке Peripherals панели Repository, которую, если она у Вас закрыта, можно вызвать через верхнее меню View->Repository при шелчке левой кнопкой мыши по названию компонента, на панели Help, которая, если закрыта, может быть отображена через View->Help, появляется краткая справка по его функциям. Имя функции представляет собой ссылку, перейдя по которой, можно получить более подробную информацию о ней, а так же о принимаемых ей в качестве параметров структурах и константах. Так же информацию о функциях, структурах и константах можно получить установив текстовый курсор на их имени в исходном коде и нажав F3, при этом в отдельной вкладке откроется место с её определением. Это же действие можно сделать через контекстное меню, появляющееся при нажатии на правую кнопку мыши. Файлы компонентов достаточно хорошо комментированы, собственно, на панели Help можно прочитать как раз информацию, из них и взятую. Так же полезно лучше понять работу используемых функций разбирая и анализируя их исходный код.
Алгоритм работы
Диаграмма алгоритма создана при помощи программы yEd
Исходный код
Следующую заметку я планирую посвятить краткому описанию архитектуры подсемейства МК STM32F407, а так же ядра Cortex-M4F, на котором данные МК базируются, а затем вернуться к приводимому в этой заметке коду, рассмотрев на его примере отладку в CoIDE.
GPIO:Теория
Документация — Doxygen
STM32. Подключение кнопки | CUSTOMELECTRONICS.
RU
Опубликовано 26.09.2017
В этой статье мы сделаем еще один небольшой шаг в ознакомлении с возможностями микроконтроллеров 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, кнопка, курс, тактовая
Просмотров: 17311
Please enable JavaScript to view the comments powered by Disqus.
добавить кнопку UserPA13 на stm32mp135f-dk
[PATCH 2/2] ARM: dts: stm32: добавить кнопку UserPA13 на stm32mp135f-dk
linux-arm-kernel. lists.infradead.org зеркало архива help/color/mirror/Atom feed
* [PATCH 2/2] ARM: dts: stm32: добавить кнопку UserPA13 на stm32mp135f-dk @ 03.05.2022 9:41 Фабьен Дессен 2022-05-03 13:49 ` Александр ТОРГ 0 братьев и сестер, 1 ответ; 2+ сообщения в теме От: Фабьен Дессен @ 03.05.2022 9:41 UTC (постоянная ссылка / необработанный) Кому: Роб Херринг, Максим Коклен, Александр Торг, devicetree, linux-stm32, ядро linux-arm, ядро linux Копия: Фабьен Дессен Пользовательская кнопка PA13 подключена к выводу PA13 микросхемы stm32mp135f-dk. доска. Для этого требуется внутренняя конфигурация подтягивания. Подписано: Фабьен Дессен--- арка/рука/загрузка/dts/stm32mp135f-dk.dts | 11 +++++++++++ 1 файл изменен, 11 вставок(+) diff --git a/arch/arm/boot/dts/stm32mp135f-dk.dts b/arch/arm/boot/dts/stm32mp135f-dk.dts индекс 65acee0f68b7..09д6226д598ф 100644 --- a/arch/arm/boot/dts/stm32mp135f-dk.dts +++ b/arch/arm/boot/dts/stm32mp135f-dk. постоянная ссылка, необработанный ответ, связанный с [квартирой | вложенный ] 2+ сообщения в теме
* Re: [PATCH 2/2] ARM: dts: stm32: добавить кнопку UserPA13 на stm32mp135f-dk 03.05.2022, 9:41 [ИСПРАВЛЕНИЕ 2/2] ARM: dts: stm32: добавить кнопку UserPA13 на stm32mp135f-dk Фабьен Дессен @ 03.05.2022 13:49 ` Александр ТОРГ 0 братьев и сестер, 0 ответов; 2+ сообщения в теме От: Alexandre TORGUE @ 03.05.2022, 13:49 UTC (постоянная ссылка / необработанное) Кому: Фабьен Дессенн, Роб Херринг, Максим Коклен, devicetree, linux-stm32, ядро linux-arm, ядро linux 03.05.22, 11:41, Фабьен Дессен написал: > Пользовательская кнопка PA13 подключена к выводу PA13 платы stm32mp135f-dk. > доска. Для этого требуется внутренняя конфигурация подтягивания. > > Подписано: Фабьен Дессен
> --- > arch/arm/boot/dts/stm32mp135f-dk.dts | 11 +++++++++++ > 1 файл изменен, 11 вставок(+) > > diff --git a/arch/arm/boot/dts/stm32mp135f-dk. постоянная ссылка необработанный ответ [flat| вложенный ] 2+ сообщения в теме
конец темы, другие темы: [~2022-05-03 13:50 UTC | новейший] Обзор темы: 2+ сообщения (скачать: mbox.gz / следить: канал Atom) -- ссылки ниже переходят к сообщению на этой странице -- 03.05.2022, 9:41 [ИСПРАВЛЕНИЕ 2/2] ARM: dts: stm32: добавить кнопку UserPA13 на stm32mp135f-dk Фабьен Дессен 2022-05-03 13:49 ` Александр ТОРГ
Это общедоступный почтовый ящик, см. инструкции по зеркалированию как клонировать и зеркалировать все данные и код, используемые для этого почтового ящика; а также URL-адреса групп новостей NNTP.
Настройка STM32 — Feelix
Выполните следующие шаги, чтобы настроить программирование микроконтроллеров STM32 с помощью Arduino IDE (1) или Visual Studio и Platform IO (2).
Подготовка
Установите STM32CubeProgrammer для загрузки в микроконтроллер STM32.
Убедитесь, что устройство находится в режиме BOOT при загрузке с помощью Arduino IDE / Platform IO (см. схему выводов)
Вариант 1: Arduino IDE
Откройте «Настройки» > «Дополнительные URL-адреса менеджера плат» package_stmicroelectronics_index.json
Дополнительные URL-адреса диспетчера плат
Откройте диспетчер плат из меню «Инструменты».
Найдите «Платы на базе STM32 MCU» и нажмите «УСТАНОВИТЬ».
Arduino Boards Manager
Set the board to ‘ Generic STM32F4 ‘
Board part number to ‘ Generic F401RCT ‘
U(S)ART support to ‘ Disabled ( Без серийной поддержки) ‘
Поддержка USB на’ CDC (Generic ‘Serial’ Supersede U (S) Art) ‘
Скорость USB до’ Low/Full Speed ‘
8888888888899 года. способ ‘ STM32CubeProgrammer (DFU) ‘
Порт не должен указывать , а не (либо указанный порт не должен вызывать проблем).
Настройки для загрузки в STM32F401
Загрузите вашу программу с помощью кнопки загрузки в Arduino IDE
Перейдите в режим
Нажмите кнопку RESET на микроконтроллере STM32
Теперь программа должна работать
Нажмите кнопку RESET, когда устройство не распознается компьютером
Добавление плат STM32 (поиск ST STM)
При запуске нового проекта выберите STM32F401RC с фреймворком Arduino
Убедитесь, что настройки в файле Platform.