user

Авторизация

Добро пожаловать!

Регистрация

Graf

stm32

STM32 GPIO (цифровой ввод данных)

 В этой лабораторной работе мы настроим GPIO для ввода. Затем мы напишем простое приложение для включения светодиода при нажатии переключателя. Вы узнаете все шаги по настройке STM32 CubeMX, перенесете код из CubeIDE на плату и начнете тестирование.

Конфигурации STM32 CubeMX   

 Шаг 1. Откройте CubeMX и создайте новый проект.

STM32 CubeMX Создать новый проект

 Шаг 2. Выберите целевой MCU и дважды щелкните его имя.

STM32 CubeMX Выберите шаг детали

 Шаг 3. Нажмите на контакт, который вы хотите настроить в качестве выхода, и выберите вариант вывода.

 Пусть это будет, например, пин А8 ! ( Светодиодный контакт )

Выбор контакта STM32 GPIO в CubeMX

 Шаг 4. Нажмите на пин-код, который вы хотите настроить в качестве входа, и выберите вариант ввода.

 Пусть это будет, например, пин А9 ! ( Кнопочный штифт )

Кнопка чтения контактов STM32 GPIO HAL

 Шаг 5. Установите внешний источник синхронизации RCC.

Выбор внешней тактовой частоты STM32 RCC CubeMX

 Шаг 6. Установите системную частоту на 72 МГц или на любую другую.

Конфигурация дерева часов STM32 CubeMX

 Шаг 8. Назовите и сгенерируйте код инициализации проекта для CubeIDE или IDE, которую вы используете.

STM32 GPIO HAL Кнопка чтения контактов CubeMX

 Затем откройте проект в используемой вами IDE. И перейдите к файлу main.c. Итак, мы можем приступить к написанию кода приложения и взглянуть на код инициализации, сгенерированный инструментом STM32 CubeMX.

Код приложения в CubeIDE   

 Инструмент CubeMX теперь сгенерировал для нас C-код инициализации. В этом нет ничего особенного, кроме функции инициализации GPIO, показанной ниже.

 Как вы можете видеть, входной контакт (A9) установлен в режим Hi-Z или высокого импеданса, это называется no-pull (без подтягивания вверх или вниз). Однако вы можете настроить штифт на подтягивание или опускание в зависимости от ваших предпочтений.

 Мы снова обратимся к документации HAL и найдем главу GPIO, где найдем список доступных API. API-интерфейсы имеют гиперссылки в файле документации, поэтому вы можете щелкнуть имя функции, чтобы перейти непосредственно к ее подробному описанию.

API-интерфейсы HAL GPIO

 Итак, давайте подробнее рассмотрим функцию GPIO_ReadPin(), поскольку мы тоже будем ее использовать.

Описание функции чтения контактов HAL GPIO

 Прочитав документацию и ознакомившись с доступными API, вы готовы к работе. В этом лабораторном занятии мы прочитаем состояние контакта кнопки (A9) и решим, следует ли установить на вывод светодиода (A8) высокий или низкий уровень. Это очень простое приложение, как вы можете понять, посмотрев код ниже.

Прототипирование и тестирование   

 Шаг 0 : См. схему и распиновку платы Blue Pill.

Распиновка синей таблетки

 Шаг 1. Подключите ST-Link к порту USB и контактам SWD на плате.

STM32 GPIO HAL Светодиод мигает

 Шаг 2. Нажмите кнопку «Отладка», чтобы скомпилировать код, записать его на плату и начать сеанс отладки.

 Примечание: если сервер GDB отладчика снова и снова возвращает вам ошибку. Затем не пытайтесь снова запустить сеанс отладки. Пока вы не переместите перемычку контакта BOOT0 из 0 в логическую 1. Затем повторите попытку отладки, все должно работать так же хорошо. Но не забудьте установить вывод BOOT0 обратно в 0, чтобы приложение запускалось при запуске после перезапуска микроконтроллера.

 Шаг 3. Вы можете остановить сеанс отладки или продолжить его. Но вам нужно один раз перезапустить MCU, чтобы запустить новое приложение в процессе загрузки.

Скачать проект LAB