Меню Закрыть

Мигание светодиодом на STM32

Мигание светодиодом на STM32

Когда мы начинаем работать с микроконтроллерами, первым шагом часто становится мигание светодиодом — своеобразный «Hello, World!» в мире встроенных систем. Этот простой пример позволяет убедиться, что плата работает, а среда разработки настроена правильно. Мы разберем, как запрограммировать мигание встроенного светодиода на STM32F4 Discovery, используя STM32CubeIDE, и заодно познакомимся с основами работы с GPIO(портами ввода вывода).Это первый шаг к созданию более сложных проектов, таких как управление моторами, работа с датчиками или создание интерфейсов связи.

Краткий обзор STM32F4 Discovery

Стоит сказать пару слов про нашу плату STM32F4 Discovery, потому что её мы будем часто использовать в наших проектах. Она предназначена для изучения возможностей STM32F4-серии и быстрой разработки проектов. Плата оснащена всем необходимым для старта: встроенным программатором/отладчиком ST-Link, USB-интерфейсом, кнопками и, что особенно важно для нашей задачи, встроенными светодиодами. Поэтому в этом проекте не придётся ничего собирать или паять, всё есть готовое. Схема расположения светодиодов на плате. 

Создание проекта и настройка тактирования

Давайте создадим наш проект. Как создать проект мы рассмотрели в этой статье (ссылка на статью 1). Выставим настройки частоты. Для этого переходим во вкладку RCC и выберем внешний резонатор.

Обратите внимание CubeIde подсветил зелёным ножки RCC_OSC_IN и RCC_ISC_OUT отвечающие за входы резонатора на нашем микроконтроллере. 

Дальше переходим в Clock Configuration и так как мы выбрали внешний резонатор то меняем частоту на 8МГц в HSE. ( Полный разбор Clock Configuration  в этой статье . ссылка на статью )  что на выходе даст нам 16МГц на шине HCLK. Для нашего проекта это повлияет только на задержу HAL_Delay(1000);

Вернёмся во вкладку Pinout&Configuration и настроим GPIO. Наша задача помигать светодиодом D4 который подключен к выводу PD12. Для этого нажимаем на вывод и выбираем из списка GPIO_Output.

Больше ничего не требуется. Запустим генерацию кода для нашего проекта.

Написание кода

CubeIDE сделает первоначальную настройку за нас. 

Напишем код, он очень простой. В библиотеке HAL есть готовая функция для мигания светодиодом. 

HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); // Переключает светодиод на PD12 </span>
HAL_Delay(500); // Ждём 500 мс</span>

Функция изменяет (инвертирует) состояние указанного пина:

  • Если пин был в 1 (HIGH) → станет 0 (LOW).
  • Если был в 0 (LOW) → станет 1 (HIGH).

Добавим наш код в цикл While чтобы он выполнялся постоянно.

while(1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
HAL_Delay(500);
}
/* USER CODE END 3 */
 

Обратите внимание что код должен быть строго между /* USER CODE BEGIN 3 */ и /* USER CODE END 3 */

Иначе при следующей генерации он сотрётся. Теперь собираем наш проект. нажимаем Build.

Прошиваем нашу плату и видим следующее. Наш светодиод загорается и тухнет.

Здесь можно посмотреть полное видео про создание проекта и мигание светодиодом.

https://youtube.com/shorts/RjEI1Ydd83U?feature=shared

Вывод и следующие шаги

Этот пример демонстрирует базовую работу с GPIO в STM32, что является фундаментальным навыком для работы с микроконтроллерами. Его часто используют для поиска неисправностей в вашем программном коде. В дальнейшем можно расширить проект, добавив обработку кнопок, управление яркостью через PWM или асинхронное мигание с использованием таймеров. Этим мы займемся в следующих статьях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *