Русские Блоги
Как загрузить и установить STM32Cubemx на официальном сайте
«Рабочие хотят быть хорошими, мы должны сначала принести пользу их инструментам». Мы все знаем, что мы будем использовать хорошие инструменты, чтобы сделать больше с меньшими затратами. При разработке STM32 STM32Cubemx является IDE, запущенным полупроводником итальянского полупроводника. Можно сказать, что для разработчиков очень удобно настраивать весь проект проекта. Его дружественная графика и визуализация очень популярны среди всех. Функции. Функции. Функции. являются мощными и поддерживаемыми, настроенная программа C имеет значительно повышенную эффективность разработки. Ниже приводится небольшое резюме личной проверки блоггера. Друзья, в которых нуждается, могут сделать ссылку.
2. После входа на официальный веб -сайт в соответствии с приведенным выше веб -сайтом вы можете увидеть следующую официальную веб -страницу. Во -первых, нажмите «Получить программное обеспечение» в зеленой коробке, чтобы повернуть.
3. После работы предыдущего шага сразу же перейдите к следующей части страницы. В зеленой поле вы можете выбрать установленную версию программного обеспечения. Если вы не выберете, по умолчанию установите последнюю версию. (Вот я последняя версия установки 6.0.1) 
4. Впоследствии нажмите «Получить программное обеспечение» в зеленом поле ниже. 
5. После предыдущего шага вы можете увидеть следующую страницу. Здесь есть два способа загрузить STM32Cubemx. Первый путь: Войдите в успешную учетную запись регистрации для загрузки. Второй метод: заполните действительную учетную запись учетной записи электронной почты и пароль для загрузки.

6. Здесь я выбираю второй метод. Заполните учетную запись учетной записи электронной почты и пароль непосредственно для загрузки (Примечание: E -MAIL и пароли должны быть действительными, в противном случае проверка не выполняется). После того, как электронная почта и пароль заполнены, параметры в красном поле проверяются, и, наконец, нажмите «Загрузить» и нажмите на Twist.

7. Смотрите подсказку следующим образом, укажите, что адрес загрузки программного обеспечения был отправлен в учетную запись электронной почты, которая была заполнена на предыдущем шаге по электронной почте. 
8. Войдите в систему загрузки программного обеспечения, отправленный по адресу электронной почты, просто заполненный. Если вы успешно получили электронное письмо, вы можете увидеть следующий контент электронной почты, нажмите «Скачать сейчас» и загрузить его. 
9. После загрузки вы можете увидеть сжатый пакет в красной коробке ниже и, наконец, распаковывать сжатый пакет. 
10. Введите папку после декомпрессии, и вы можете увидеть программный пакет программного обеспечения STM32Cubemx в красной коробке. 
11. Используйте администратор, чтобы открыть пакет установки программного обеспечения в системе Win10, см. В следующем поле выбора и нажмите «Далее», чтобы нажать Twist. 
12. Проверьте опцию в красном поле и нажмите «Далее», чтобы нажать Twist. 
13. Затем проверьте параметры в следующих 2 красных кадрах и, наконец, нажмите «Далее», чтобы нажать и скрутить. 
14. Выберите каталог, который вы хотите установить здесь (следующая красная коробка заключается в том, что я сам создал новый каталог установки программного обеспечения. Вы можете по умолчанию установить каталог по умолчанию или самостоятельно изменить каталог установки) и, наконец, нажмите «Сохранить "Нажмите Твист. 
15. Затем нажмите «Далее», чтобы скрутить. 
16. Выскочивает следующее диалоговое окно, нажмите «Да», чтобы скрутить. 
17. Затем нажмите «Далее», чтобы скрутить. 
18. См. Следующую панель хода выполнения установки, указывающая, что программное обеспечение установлено. 
19. После завершения установки нажмите «Далее», чтобы нажать и закручивать. 
20. Наконец, нажмите «Готово», чтобы нажать и скрутить. 
21. После успешной установки вы можете увидеть сочетание программного обеспечения STM32Cubemx на рабочем столе Windows. 
22. Откройте настольный сочетание программного обеспечения STM32Cubemx, чтобы увидеть интерфейс, с которым мы очень хорошо знакомы. 
23. Здесь STM32Cubemx был успешно установлен. Можете ли вы разработать его счастливо? Ответ не в том, чтобы развиваться счастливо, почему? Поскольку STM32Cubemx полагается на среду Java, JRE должен быть установлен для счастливого развития. Следующий выпуск установки JRE будет обобщен и разделен подробно. 
Чё, и st санкциями балуется?
И если второе меня сейчас не волнует, то вот первое часто спасало для настройки фриртоса/юсб/системклок/прочей мелокой инициализации.
Proxy/vpn не пробовал, на сайте зарегистрирован.
При попытке нажать пишет вот это.


Ну попробуй VPN. С аналогом помогает.

f12 в броузере и выбрать «сеть», тогда можно будет увидеть ответы на асинхронные http запросы. Я сам из Крыма, там многие сервисы возвращают 403, и никогда 451 хотя это больше бы походило по смыслу.
Обычно спасают тоннели, но иногда сервисы по подписке могут заболотить за единственный коннект из неправильного региона. Тык что придется некоторым кодерам перерегится в иностранные юрисдикции и рекомендую настроить отдельного пользователя для работы только через VPN (я так делал).
Генератор кода (проектов) STM32CubeMX скачать, как пользоваться
Штука, которая многократно упрощает создание кода для STM32 , что позволяет, очень быстро достичь нужной работы, особо не вникая в тонкости работы микроконтроллера, а с с библиотекой HAL еще и с легкостью переносить код между разными контроллерами.
Кроме этого с помощью STM32CubeMX просто удобно смотреть и устанавливать выводы микроконтроллера прямо на этапе создания платы, что минимизирует ошибки. Скачать можно на оф. сайте, а также ознакомится с резервной копией в посте ТГ-канала.

Создание проекта
Создаём новый проект: File -> New Project (Ctrl + N)

Выбираем микроконтроллер, у меня это » черная пилюля » (Black Pill STM32F411).

Включаем отладчик (чтобы была возможность подключения такого программатора-отладчика STLINK): SYS -> Debug: Serial Wire

Настройка вывода PC13 на выход, установка названия LED, на отладочной плате к нему подключен светодиодик катодом к выводу и анодом к плюсу питания.

Также врубаем универсальный асинхронный приемопередатчик (UART) На скорости 9600 бод/c:

Систему тактирования не трогаем, пусть работает от внутреннего источника тактирования на 16 МГц:

Во вкладке Project Manager пишем названия (кстати, никогда не допускайте кириллических символов в папках, иногда из-за этого могут быть ненужные неприятности в разном ПО) , выбираем среду разработки, у меня это Keil (<- подробнее ознакомится в статье).

После нажимаем кнопку GENERATE CODE для создания кода и открываем проект:

В общем-то на этом как-бы всё, проект готов
Открытие проекта
Если у вас есть Keil , то можно продолжить, здесь каждые 500 мс передается сообщение Hola (с переносом) и происходит переключение состояния светодиода:

Почему отнимается единица от вычисленного размера массива?
Потому что при таком написании в конце добавляется NULL-символ (0x00), который обозначает окончание строки, он конечно учитывается как байт, но его передавать не нужно.

Для компиляции жмем: Project-> Build Target

Ошибок нет, можно сразу загрузить код в МК нажатием Flash -> Download (после этого нажать кнопку сброса на плате):

Или зайти в режим отладки ( Debug -> Start/Stop Debug Session ), а потом запустить программу ( Debug -> Run ):

В железе
Ну и конечно это все работает на настоящем микроконтроллере:
Миганием светодиода видно и так, а чтобы увидеть передачу данных можно можно подключать логический анализатор на 8 каналов, андроид-осциллограф HS101, просто переходник USB-UART или блютуз модуль, я выбрал последнее из-за удобства:
STM32 fast start. Часть 1 ПО, материалы, Cube MX
В последнее время все чаще сталкиваюсь с холиварами на тему Cube MX и HAL, применительно к контроллерам STM32.
С одной стороны — стоят защитники, которым нравится удобство конфигурирования и читаемость кода.
С другой — приверженцы писать все руками, которым важна скорость работы и бережное использование ресурсов.
Для того, чтобы расставить все точки над i — попробуем написать «Hello world» тремя наиболее часто используемыми путями CMSIS, LL, HAL. Оценим затраты (ресурсы контроллера, объем исполняемого файла, и конечно же время работы разработчика).
Статья будет состоять из нескольких частей:
STM32 fast start. Часть 1 ПО, материалы, Cube MX.
STM32 fast start. Часть 2 Hello World на HAL, настройка отладки в Atollic TrueSTUDIO
STM32 fast start. Часть 3 Hello World на LL
STM32 fast start. Часть 4 Hello World на CMSIS
STM32 fast start. Часть 5 Подведение итогов, сравнение HAL, LL, CMSIS.
Сначала давайте определимся с тем, что же мы собственно будем программировать, то есть найдем подходящее железо.
Идеальным вариантом будет бюджетная плата на STM32F103C8T6 микроконтроллере.

Данную плату можно найти на всем известном сайте по цене от 100 российских рублей.
Искать по ключевым словам: STM32F103C8T6 ARM STM32 Minimum
Для того, чтобы залить прошивку и поиграть с отладкой — так же потребуется программатор
Для начала, да и для дальнейшего использования идеально подойдет китайский клон программатора ST-LINK V2.
Купить можно на том же сайте по цене от 120 российских рублей.

Искать по ключевым словам ST LINK Stlink ST 252dLink V2 Mini STM8 STM32:
Для разработки ПО под STM32 можно использовать различные IDE.
Самые популярные — IAR, Keil, Coocox (Eclipse).
Мы же пойдем по пути, который с недавних пор абсолютно бесплатно и в полном объеме предоставляет сама ST.
Будем использовать Atollic TrueSTUDIO for STM32 или в простонародии «Толик».
Какие плюсы у данного ПО: абсолютно бесплатно, нет ограничения по размеру кода, есть неплохой отладчик, простая установка и настройка.
Минусы: нет авто дополнения кода.
Доступны версии под windows и linux.
Качаем здесь https://atollic.com/resources/download/
С установкой данного ПО проблем возникнуть не должно, все интуитивно понятно, выбираем куда ставить и жмем все время «далее».
После установки можно не запускать, так как помимо самой IDE нужно еще кое что.
Если все таки запустили — просто закрываем.
Так как TrueSTUDIO — это средство разработки и отладки, хотелось бы не собирать проект руками (подключая требуемые библиотеки и прописывая пути), а получить некий преднастроенный файл, в котором можно без лишних заморочек сразу же писать код.
Для этого применяется программа генератор кода Cube MX или в простонародии «Калокуб».
Данное ПО является первым камнем преткновения в холиварах на чем же писать под STM: на регистрах и CMSIS или на HAL.
Защитники первой идеологии приводят такие аргументы: Cube MX генерирует огромный, ненужный объем кода, который к тому же замедляет работу МК.
Защитники второй — заявляют, что автоматически сгенерированный код сокращает время разработки, позволяя разработчику быстрее переключится к сутевой части устройства (к основной логике), отдав рутинную настройку периферии на откуп специализированному ПО (Cube MX).
Как ни странно — обе эти идеологии правдивы и применимы на практике, но только каждая в своих условиях.
Давайте рассмотрим пару примеров:
Пример №1: Требуется разработать устройство, максимально дешевое, так как планируется производство партиями по 100500 шт ежегодно. Естественно, каждый лишний рубль цены устройства — выльется в сотни тысяч рублей затрат на финальном устройстве. При этом в планируемой разработке есть пара тяжелых расчетов и работа с периферией (ADC, SPI, UART) на максимальных скоростях.
Устройство является полностью автономным продуктом, в дальнейшем планируется минимальные изменения за весь срок производства данного оборудования. Срок разработки до получения готового образца — 1-2 года.
Пример №2: Требуется прототип устройства, который возможно заинтересует заказчика и он закажет 100 шт аналогичных устройств для переоборудования своего объекта. Первая планируемая партия должна быть отгружена заказчику через 2 месяца. Размер первой тестовой партии 10 шт.
Точное ТЗ будет корректироваться в процессе работы над проектом, но известно, что в дальнейшем планируется несколько переработок аппаратной части, под которую необходимо оперативно подстраивать всю прикладную логику.
В первом примере идеальным вариантом будет выбор максимально дешевого контроллера и написание аппаратно зависимого, но оптимального кода, где работа с периферией будет организована через обращение к соответствующим регистрам (CMSIS). Разработчик, который занимается данным проектом — должен обладать хорошими или отличными знаниями периферии конкретного семейства МК. В идеале — при попытке разбудить его ночью — должен сразу же назвать адрес требуемого вектора из таблицы векторов прерываний.
Во втором примере — выбор контроллера обусловлен имеющимся в наличии железом, а так же затратами времени для написания функционала требуемого заказчиком. Поэтому скорость работы и оптимизированность самого ПО отходит на второй план. Времени на ручную инициализацию нет, как нет времени и на проработку аппаратных зависимостей.
В таком случае выбирается контроллер, который можно быстро поставить в производство в текущем регионе, на нем делается инициализация с помощью Cube MX, пишется прикладная логика на HAL и прототип передается заказчику для тестирования. Такой проект может вести любой средний разработчик, который постиг навыки работы с целевым языком программирования. Вникание в тонкости работы периферии — практически не требуются.
Как бы это не печально звучало — в реалиях современной разработки устройств в России — пример №1 встречается все реже, передавая эстафету примеру №2.
К обсуждению примеров №1 и №2 вернемся в самом конце цикла статей, а сейчас продолжим с подготовкой рабочего пространства.
На данном этапе сделаем небольшую паузу, зайдем на сайт my.st.com и зарегистрируем на нем учетную запись, так как политика компании ST не позволяет скачивать необходимые материалы без регистрации.
После того, как у нас появился доступ к сайту — скачиваем STM32 Cube MX.
В самом низу страницы есть кнопка выбора версии, нам нужна версия 5.0.0

Попутно, пока мы не ушли отсюда, качаем еще две вещи, которые пригодятся в дальнейшем
https://www.st.com/en/development-tools/stsw-link008.html
Драйвер ST-LINK V2


Установка драйвера, прошивальщика и самого Cub’a не вызывают затруднений, просто соглашаемся со всем и жмем далее.
После полной установки необходимого ПО — можем приступать к созданию проекта.
Для этого запустим Cube MX.
В появившемся окне нажмем на кнопку «ACCESS TO MCU SELECTOR».

На нашей целевой плате установлен микроконтроллер STM32F103C8T6.
Введем его название в строке поиска и двойным щелчком выберем единственный найденный вариант.
В этой же таблице видно основную начинку нашего МК (64 килобайт флеша, 20 килобайт оперативы и пр).

Перед нами появился схематически изображенный корпус контроллера с разведенными в разные стороны ножками.
На данном этапе необходимо обязательно выбрать способ подключения отладчика.
Для этого на вкладке Pinout & Configuration в левом меню выбираем пункт SYS а в нем в выпадающем списке под названием «Debug» устанавливаем значение Serial Wire.
При этом краем глаза замечаем, что программа зарезервировала для отладочных целей два пина на мнемосхеме контроллера.

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

или более красочная и простая для понимания распиновка платы

Искомый светодиод находится на ножке PC13.
Соответственно, необходимо настроить данный вывод для работы в режиме выхода.
- Находим вывод на мнемосхеме
- Нажимаем на него правой кнопкой мыши, из выпадающего меню выбираем пункт «GPIO_Output»
- Переходим в меню GPIO,
- В списке выбираем PC13
- Заполняем таблицу PC13-TAMPER-RTC Configuration в соответствии со скриншотом, особенно нас интересуют параметры GPIO mode и User Label
Продолжаем настройку проекта, переходим к вкладке Clock Configuration.
На самом деле это одна из важнейших вкладок, которая позволяет настроить параметры тактирования периферии, но пока не будем здесь ничего трогать, так как главная цель на данный момент не в этом.

Переходим к вкладке Project Manager, под вкладка Project.
Обязательно заполняем следующие параметры:
- Имя проекта (лучше использовать только латинские буквы)
- Директорию, в которой будет создан проект (так же лучше использовать только латиницу)
- IDE, в которой планируется работа над проектом (мы планируем использовать TrueSTUDIO)
Спускаемся ниже, под вкладка Code Generator.
Здесь обязательно отмечаем опцию Generate peripheral initialization as pair…
Таким образом получим более структурированный проект, в котором для каждого типа периферии имеется своя пара C и H файлов.

Остался последний шаг. Подвкладка Advanced Settings.
- Выбираем тип библиотеки HAL для всех периферийных модулей
- Собираем проект с текущими настройками
При первоначальном запуске возможно потребуется загрузить актуальную версию библиотеки для выбранного семейства МК.
Даем свое согласие на скачивание файлов:

Идем греть чайник или готовить кофе:

После окончания работы кодо-генератора — сразу же открываем его:

Выбираем любую папку, где Atollic будет хранить рабочее пространство:

При успешном открытии — перед нами предстанет главное окно Atollic TrueSTUDIO for STM.
Общая информация нас мало интересует, поэтому сразу перейдем к дереву файлов.
