Всем привет!
И так сегодня я решил добавить статью по STM32CubeIDE. В последнее время очень часто получаю на почту вопросы связанные с этой средой разработки программ для микроконтроллеров. Причем вопросы одинакового характера и связаны с тем - как установить, как запустить, как создать проект, как отладить код? Поэтому в этой статье постараюсь показать самое начало - от установки до моргания светодиодом. В конце видео в котором показывается процесс создания проекта.
STM32CubeIDE - что это ?
Это то, чем мы будем управлять нашим микроконтроллером!
Задача следующая:
1. Есть плата и программатор (подключаем программатор к плате - не буду описывать как - можно посмотреть на просторах интернета) и подключаем сборку к компьютеру.
2. Установить STM32CubeIDE
3. Произвести первоначальную настройку микроконтроллера
4. Написать программу моргания светодиодом
5. Записать в микроконтроллер
6. Увидеть моргание светодиода
И все это только с помощью STM32CubeIDE !
Все делаем в WINDOWS 10 (все обновления от января 2024)
Итак приступим ....
STM32CubeIDE быстро развивается. Текущая версия на сегодня (начало 2024 года) - 1.14.1. (для win)
Версии для большинства операционных систем
Как скачать
1. Регистрация на сайте st.com
2. Ваш IP должно быть не из РФ.
Регистрируемся.
Входим на сайт - убеждаемся в этом.
Идем на страницу загрузки STM32CubeIDE и скачиваем версию для WINDOWS
Устанавливаем
Программы от ST не любят кириллицу совсем поэтому меняем и названия и пути !!!!!!!!
После установки и первом запуске я рекомендую этот путь
Заменить на этот
Запускаем и видим рабочее пространство и логинимся как на сайте ST
Начинаем создавать проект
После загрузки и обновления списка микроконтроллеров и плат появляется окно выбора микроконтроллера
Выбираем микроконтроллер как на плате
Именно наш
Выходит окно создания проект
Вводим название
Далее РЕКОМЕНДУЮ ИЗМЕНИТЬ ПУТИ ХРАНЕНИЯ БИБЛИОТЕК!
Все сохраняем
Нажимаем финиш.
Появляется окно - Соглашаемся
Запускается генератор начального кода
Далее программа увидит отсутствие необходимых библиотек и начнет их скачивать т.к. мы выбрали микроконтроллер в первый раз.
Если все нормально - выйдет начальная страница с нашим выбранным микроконтроллером и соответственно сгенерируется проект слева с выбранным нами названием!!!
Приступим к назначению портов и тактирование микроконтроллера.
В первую очередь назначаем механизм отладки микроконтроллера
Продолжаем и определяем, что будем работать с внешним кварцем! Обращаем внимание в каком мы окне по стрелкам!
Следующим шагом назначаем частоту работы микроконтроллера
Делается просто:
1. Убеждаемся, что кварц номиналом как на плате
2. В PLL ставим точку как по стрелке
3. Где HCLK - ставим частоту на которой будет работать наш микроконтроллер прям цифрами пишем 48 МГц и нажимаем ввод - программа сами рассчитает все необходимое!!!!
Переходим дальше и настраиваем порт для светодиода как выход!
Называем порт для удобного понимания
Назначили и переходим к параметрам выбранного порта
Важные параметры указал стрелками.
GPIO output level - зависит от того как подключен светодиод на плате.
В нашем случае это не имеет значения.
Максимальная скорость порта ..
Я обычно всегда этот параметр устанавливаю в High (когда нет контроля за потреблением и когда светодиод передает сигналы связи) в нашем не имеет значение но переключу на максимальный!
На этом процесс настройки с помощью графического конфигуратора окончена и следующим шагом необходимо сгенерировать начальный код
В основном окне выбираем сохранить и выйдет окно с предложением сгенерировать код!
Жмем да и процесс начинается
По окончанию выбираем и открываем main.c и конечно соглашаемся !
Двигаемся по main.c до места где будем писать работу светодиода
Но как нам заставить port микроконтроллера изменять свое состояние?
Нам нужна команда которая нам изменит состояние порта к которому подключен наш светодиод.
Т.е. включить светодиод - подождать - выключить светодиод
Как пример - с помощью библиотек которые мы скачали ! Раз они есть - то есть и команды управления портами!
Для работы с портами микроконтроллера существуют следующие файлы :
stm32f0xx_hal_gpio.h
stm32f0xx_hal_gpio.с
Ищем файл stm32f0xx_hal_gpio.h и открываем его (два раза левой клавишей).
Ищем файл stm32f0xx_hal_gpio.с и открываем его (два раза левой клавишей).
Переходим во вкладку stm32f0xx_hal_gpio.h и перемещаемся в самый низ и видим то, что можно сделать с портом
Команд все 5 для нашего F0
Выберем самую простую - 3 - TogglePin - эта команда будет изменять состояние порта и менять его на противоположное!
Выбираем и жмем правую клавишу мыши - мы можем посмотреть как эта команда работает
Жмем F3 и переходим в ранее открытый stm32f0xx_hal_gpio.с
Переходим к выполнению первоначальной задачи !
Копируем название и переносим к себе в main.c
Скопировал выше того места куда должен скопировать.
Обычно копирую прототип два раза - один правлю на другой смотрю!
И начинаем править заменяя прототипы своими данными.
Но просто управлять портом - это хорошо, но это переключение не увидеть глазом в каждом цикле программы ...
Нужна пауза перед изменением порта - тогда изменение работы светодиода будет - заметно.
Для этого есть стандартная функция задержки - Delay();
Добавим ее в программу и получим
Следует обратить внимание что все свои команды следует писать в том месте программы, где указано USER CODE BEGIN ....
Почему это сделано - потому, что если еще раз вызвать конфигуратор начального кода и изменить конфигурацию (добавить еще один порт например забыли, новая задача и т.п.) то все записи внесенные вне рамки USER CODE BEGIN .... USER CODE END будут затерты!!!!!!!
Итак программа написана - идем дальше проверяем ее на ошибки - жмем на молоток!!!!
Если все делали правильно, то получим в консоли результат проверки программы
Ура!
Ошибок нет - осталось только записать в микроконтроллер и посмотреть как моргает светодиод!
Идем в настройки - зеленый круг и белая стрелка
И настраиваем
В окне выбираем
Устанавливаем во вкладках. Для вкладки ST_LINK (он еще подключен у нас! ) - жмем Scan
И дальше по стрелкам
Как только нажали Apply
Должно появиться окно Защитника WINDOWS - разрешаем доступ
Как только доступ получен - пошла прошивка.
Ну, а в окне консоли видим результат.
1. Определился программатор и микроконтроллер
2. Стерлась память микроконтроллера.
3. Файл зашился в микроконтроллер.
4. Проверка
И все.. светодиод должен включаться и выключаться с интервалом 500 ms!!!
Эта статья пригодиться тому, кто совершает первые шаги в освоении программ для программирования микроконтроллеров, и не сомненно, позволит начать двигаться дальше !!! Если остались вопросы или возникли новые - пишите на stm32@stm32res.ru постараемся ответить!
Если эта статья помогла сдвинуться с места на столько, что готовы поощрить - мы только рады - пишите на почту вышлем координаты !