Найти тему

SDK-1.1M на базе STM32 для начинающих: мигаем светодиодами

Осваиваем учебный стенд SDK-1.1M. Подробнее о стенде можно прочитать в статье Учебный стенд SDK-1.1M для изучения микроконтроллеров

SDK-1.1M.  Те самые светодиоды, о которых пойдет речь.
SDK-1.1M. Те самые светодиоды, о которых пойдет речь.

Что такое светодиод

Как написано в Википедии, светодиод или светоизлучающий диод это полупроводниковый прибор с электронно-дырочным переходом, создающий оптическое излучение при пропускании через него электрического тока в прямом направлении.

Схематическое изображение светодиода
Схематическое изображение светодиода

Чтобы светодиод зажегся необходимо на анод подать положительное напряжение, а катод подключить к земле. Положительное напряжение мы можем получить , если подадим логическую единицу на выход микроконтроллера, к которому подключен светодиод.

Что нам понадобится

  1. Во-первых, вам будет нужен сам стенд SDK-1.1M. Если вы студент ИТМО (если нет, то поступайте к нам в магистратуру, у нас интересно), то у вас эти стенды активно используются в учебном процессе на факультете ПИиКТ. Если нет, вы можете его приобрести для вашего учебного заведения или купить для себя в личное пользование, вот официальный сайт. В отличие от дешевых прототипных плат SDK-1.1M сделан надежно (стенды предыдущей версии успешно отработали больше 10 лет в различных университетах РФ), по всем правилам, как промышленный контроллер. Например, вы можете сделать из него умный дом и он проработает у вас лет 10 как минимум без каких либо проблем и у вас душа не будет болеть, что у вас что-то сломается или повиснет по непонятной причине.
  2. Вам понадобится IDE и компилятор для ARM Cortex-M. Можно использовать бесплатный STM32CubeIDE или AC6 System Workbench. Ссылки на их скачивание есть на официальном сайте st.com, чтобы скачать продукт там нужно будет зарегистрироваться. Для программирования стенда можно также использовать платные IDE IAR и Keil. Это довольно дорогие продукты, кроме того вам понадобится использовать для программирования и отладки внешний программатор ST-Link v2 или его китайский аналог. Вот тут написано, как это сделать. Для STM32CubeIDE ничего дополнительно покупать не нужно, достаточно встроенного в SDK-1.1 программатора и USB провода, входящего в комплект поставки.
  3. Вам понадобится поставить драйвер USB (один раз!). Процесс подробно описан в руководстве пользователя. Стенд можно подключать к компьютерам по управлением ОС Windows, Linux или Mac OS X. Скриншоты для этой статьи я делал на маке, работаю обычно под Linux. Стенд и STM32CubeIDE замечательно работают везде.
  4. Вам нужно знать язык Си хотя бы на минимальном уровне. Могу порекомендовать книжку, она есть на litres и вы можете читать ее прямо с телефона: Сергей Фомин, Вадим Подбельский Курс программирования на языке Си: учебник

Светодиоды в SDK-1.1M

Светодиоды. Фрагмент схемы SDK-1.1M
Светодиоды. Фрагмент схемы SDK-1.1M

В SDK-1.1M доступно два светодиода: одноцветный VD6 и двухцветный VD7.

Загрузите схему SDK-1.1M. На схеме видно, что светодиоды подключены к проводникам с именами GLC, YARC и YCRA. Если посмотреть схему, то мы увидим, что эти проводники подключены к портам PD13, PD14 и PD15 микроконтроллера.

Подключение светодиодов к микроконтроллеру. Фрагмент схемы SDK-1.1M
Подключение светодиодов к микроконтроллеру. Фрагмент схемы SDK-1.1M

Светодиод VD6 "РАБОТА"

Как видно из схемы, этот светодиод свои катодом подключен к земле (GND), а анодом через резистор R16 к шине питания (3.3 В). Если вывод микроконтроллера PD13 запрограммирован на вход (то есть вывод находится в Z-состоянии), то в таком состоянии светодиод будет гореть сразу после подачи питания на микроконтроллер. Это сделано для того, чтобы светодиод мог гореть без программирования, обычно так делают когда хотят сделать светодиод означающий, что питание устройства включено.

Чтобы погасить светодиод нужно, чтобы на его аноде появился логический "0" (сигнал GLC).

Светодиод VD7 "РЕЖИМ"

Из схемы видно, что светодиод VD7 двухцветный. У него всего два вывода, а внутри находится два светодиода. К каждому из выводов подключен катод и анод двух разных диодов.

Если на входах одинаковый потенциал (земля или напряжение питания), то оба светодиода не горят. Если подать на левый выход напряжение питания, а правый выход подключить к земле, то загорится один светодиод, если наоборот - то другой. В результате мы имеем светодиод, который может светится двумя разными цветами.

Пример программы

Пример программы можно скачать с Github.

В файле SDK_LED.ioc находится описание аппаратуры для STM32CubeMX или STM32CuveIDE.

Скриншот из STM32CubeIDE
Скриншот из STM32CubeIDE

Обратите внимание, выводы микроконтроллера PD13, PD14, PD15 запрограммированы на выход (GPIO_Output).

Исходный текст нашей программы находится в файле main.c в папке Core/src

 Файл main.c Скриншот STM32CubeIDE
Файл main.c Скриншот STM32CubeIDE

Наша программа находится в конце функции main, между комментариями

/* USER CODE BEGIN 3 */

...

/* USER CODE END 3 */

Если вы разместите свой код в другом месте, то при генерации исходных текстов с помощью STM32CubeIDE или STM32CubeMx ваша программа будет стерта. Останутся только те строки, которые вы вставили между подобными комментариями.

Исходный текст программы, фрагмент функции main().
Исходный текст программы, фрагмент функции main().

Программа очень простая. Функция HAL_GPIO_TogglePin подает при каждом вызове то логический ноль, то логическую единицу. Функция HAL_Delay обеспечивает задержку на заданное количество миллисекунд. Все повторяется в бесконечном цикле while(1). В результате у нас светодиоды мигают или меняют цвет один раз в половину секунды.

Вам нужно подключить стенд к компьютеру по USB так, как это описано в руководстве пользователя. Далее вы компилируете программу и загружаете в стенд. Если все сделано правильно, два светодиода на процессорном модуле начинают мигать.

Руководство пользователя, методическое пособие, а также различные статьи о том как программировать стенд SDK-1.1M ищите в моем блоге по тегу SDK-1.1M