STM32 Быстрый старт с STM32CubeMx
STM32. Быстрый старт с STM32CubeMx.
Всем нам известная фирма ST Microelectronics выпустила и активно развивает абсолютно новый продукт под названием STM32CubeMx, и я не мог обойти это вниманием 🙂 Сегодня разберемся, что это вообще такое и для чего это нужно.
STM32CubeMx – абсолютно новый программный продукт, позволяющий легко и непринужденно при помощи достаточно понятного графического интерфейса произвести настройку любой имеющейся на борту микроконтроллера периферии. Предыстория создания CubeMx такова – ST имеют очень разнообразную линейку микроконтроллеров, тут вам и Cortex-M0, и Cortex-M0+, и Cortex-M3, и Cortex-M4. Соответственно, встает вопрос о каком-то едином наборе библиотек и едином инструменте для настройки и конфигурирования всего этого многообразия. Вот для решения этих целей и был выпущен STM32CubeMx.
Работает все это так – создаем проект, выбираем микроконтроллер и нам сразу же предлагается большая схема со всеми выводами выбранного нами контроллера. Нажимая на выводы и заходя в разнообразные меню, мы легко настраиваем как периферию, так и режимы работы каждого конкретного вывода. Сразу же очевидные плюсы – можно наглядно увидеть, какие выводы уже заняты, а какие еще свободны (в крупных проектах – более чем полезная фишка). Как все это работает мы еще увидим на примере, а пока обсудим в общих чертах 🙂
Итак, мы выбрали все нужные нам выводы, ввели все настройки периферии (например, частоты тактирования, режимы работы таймеров….), и STM32CubeMx дает нам возможность сгенерировать соответствующий код. То есть в итоге мы получаем готовый проект, с уже прописанными настройками, с подключенными библиотеками и с готовой инициализацией всей выбранной периферии. Базой для всего этого являются библиотеки CMSIS и HAL. С CMSIS мы уже давно знакомы, а вот вторая библиотека – это что-то новое.
Библиотека STM32 HAL Driver пришла (пока еще не окончательно) на смену всем хорошо известной библиотеке Standard Peripheral Library (SPL). В принципе, и структура и функции этих библиотек очень схожи, но HAL более заточена под принцип “вызвал функцию и сразу заработало”. Для тех, кому не особо хочется возиться с какими-то низкоуровневыми настройками периферии – то что надо 🙂 Естественно, на данный момент библиотека еще “сыровата”, есть некоторые недоработки, но с каждым новым релизом ситуация все лучше и лучше.
Перейдем к практике. И тут я решил остановить свой выбор на семействе STM32F4, хотя это не имеет особого значения, поскольку мы всего лишь хотим ознакомиться с функционалом и принципом работы STM32CubeMx. Итак ST предлагают нам во-первых, собственно, сам STM32CubeMx (в скачанном архиве будет .exe файл для установки программы), а также набор библиотек STM32Cube FirmWare F4. Несмотря на почти одинаковые названия архивов на сайте ST – это абсолютно разные вещи. CubeMx – готовый софт для конфигурирования периферии, Cube FW – набор множества библиотек.
И для начала рассмотрим, что же за библиотеки нам предлагаются. Распаковываем архив и начинаем ковырять:
Идем в папку Drivers – и там находим следующие библиотеки:
- BSP – папка с драйверами для конкретных отладочных плат на базе STM32F4. Например, для STM32F4Discovery там можно найти файлы с уже готовой реализацией обмена данными с акселерометром. Само собой светодиодами там тоже можно помигать 🙂
- Кроме того, в папке Drivers лежит библиотека CMSIS и STM32F4xx_HAL_Driver, которую мы уже обсудили.
- Папка Middlewares содержит содержит вещи посерьезней – библиотеки для работы с аудио, USB, а также библиотеки FatFs, FreeRTOS и другие, адаптированные под использование совместно с STM32F4xx HAL Driver.
- В папке Projects – огромное количество готовых примеров на любой случай жизни и для всех основных отладочных плат.
В общем практически все, что может понадобиться, собрано в одном месте. Переходим к STM32CubeMx. И для начала устанавливаем программу. А потом и запускаем:
Выбираем новый проект. Сразу же открывается окно с огромным количеством настроек, в котором нам необходимо выбрать микроконтроллер, который мы собираемся использовать в нашем проекте. Я выбрал STM32F407VGTx. Появляется новое окно:
И тут мы уже видим в правой части изображение нашего контроллера со всеми выводами, а слева список всей доступной периферии. Также в левой части окна можно выбрать будет ли использоваться, например, FreeRTOS в нашем проекте.
Если мы зайдем сверху в меню Project и выберем там Settings, то Cube предложит нам выбрать для какой IDE произвести генерацию кода. Я оставлю без изменений – IAR v6.70.Также в этом окне надо ввести название проекта и выбрать путь для его сохранения.
Давайте для примера выберем что-нибудь. Пусть будет задействован первый канал АЦП и три вывода, работающих в режиме выхода.
- кроме того, если планируется использовать отладчик, необходимо в пункте SYS выбрать отладочный интерфейс. Например, для отладчика ST-Link настройки будут выглядеть так:
Готово! теперь нажимаем на кнопку Generate Source Code, и Cube предложит нам скачать необходимые библиотеки (как раз те, которые мы обсудили в начале проекта). Пусть скачиваются, просто ждем.
После окончания генерации открываем папку с нашим проектом и видим, что там появились новые файлы и папки. В папке Drivers содержатся все необходимые библиотеки, а в папках src и inc, соответственно, сами файлы с кодом нашей инициализации. Откроем, например, файл main.c:
В функции main() вызываются MX_GPIO_Init() и MX_ADC1_Init(), которые определены в этом же файле – main.c. Собственно, в этих функциях и содержится инициализация и настройка всей периферии, которую мы выбрали при создании проекта в STM32CubeMx. Как видите, все работает!
В общем, пожалуй, на сегодня это все 🙂 Разобрались в общих чертах с новыми библиотеками и с созданием тестового проекта при помощи STM32CubeMx, так что до скорых встреч на нашем сайте!
Источник
Блог Фаталиста
Как и обещал, выкладываю способ запуска Куба (STM32CubeMX) под линуксом. У меня установлена Linux Mint 17.3, хотя этот способ, скорее всего, будет работать на любом дистрибутиве линукса где есть Java RE, т.к. Куб написан на java.
У меня хорошей традицией стало выпиливание из ОС свободного openjdk и установка оригинального JRE/JDK с сайта Oracle. Не могу точно сказать, будет ли Куб корректно работать под свободной реализацией JRE т.к. даже не пробовал. Как установить Oracle JRE/JDK в Ubuntu-based дистрибутиве замечательно описано тут
Это будет zip-архив, который надо будет распаковать
На данный момент последняя версия Куба — 4.12.0.
Далее, нам необходимо будет распаковать exe-файл SetupSTM32CubeMX-4.12.0.exe. Самый простой способ — открыть в Менеджере архивов. Для установщика я создал отдельную папку SetupCube, куда и распакую содержимое exe-файла.
После этого нам необходимо выяснить имя класса-инсталлятора и запустить его. Среди распакованных каталогов и файлов есть манифест по пути META-INF/MANIFEST.MF. Открываем его в текстовом редакторе.
java -cp . com.izforge.izpack.installer.bootstrap.Installer
А вот и наш инсталлятор
Каталог /home/sergio/STM32Cube/ будет общим для Куба и его репозиториев.
Собственно дальше тривиально — устанавливаем. После установки видим такую картину:
Понятно, что без wine мы не сможем запустить Куб под линуксом, т.к. exe-файл. Но, к счастью, нам это и не нужно. Также, как с инсталлятором, мы распаковываем одержимое exe-файла в эту папку.
Точно также находим манифест и смотрим название основного класса Куба. Это у нас
com.st.microxplorer.maingui.STM32CubeMX
Запускаем таким же способом, как и инсталлятор — из консоли, находясь в папке, куда мы только что установили Куб.
Источник
Lanchon / stm32cubemx-linux.md
The STM32CubeMX tool is written in portable java, but unfortunately it is distributed as a Windows executable embedded in a Windows installer.
To install it on Linux:
- sudo java -jar SetupSTM32CubeMX-4.11.0.exe
- install the tool somewhere in your home, eg: /home/you/stm32/cubemx
- sudo chown -R you:you /home/you/stm32/cubemx
- java -jar /home/you/stm32/cubemx/STM32CubeMX.exe
- or mark that file as executable, rename it to STM32CubeMX.jar , and double click it
This comment has been minimized.
Copy link Quote reply
dmitvitalii commented Jan 1, 2018 •
Note from future: finally CubeMX has a linux version of an installer, so launching an .exe file via java is no longer needed: you can just perform sudo ./SetupSTM32CubeMX-4.23.0.linux .
This comment has been minimized.
Copy link Quote reply
asdmin commented Jun 18, 2018 •
Yes, but the ‘installer’ is 32 bits, and it creates its own troubles on ia64 systems. The procedure above also can be used, when an ia64 system experiences problems with the ia32 binary.
Thanks for the procedure!
This comment has been minimized.
Copy link Quote reply
maxmbed commented Sep 30, 2018
Thanks java command is still useful. I did not want to install 32 bits lib.
This comment has been minimized.
Copy link Quote reply
gooyle commented Oct 28, 2018
Thanks java command is still useful. I did not want to install 32 bits lib.
I am using the ubuntu 18.04,but it shows »no jave commond»,is there any solutions?
This comment has been minimized.
Copy link Quote reply
VictorTagayun commented Feb 2, 2019
Hello I am using Ubuntu 18.04, how to make shortcut for it?
This comment has been minimized.
Copy link Quote reply
vpatron commented Mar 3, 2019
Thanks for the instructions! I’m using GalliumOS (based on Xubuntu) on my Chromebook and I’m finding that I need to use jdk 8 instead of 9, else I get an error running it:
then do the java commands like in your instructions. The sudo ./SetupSTM32CubeMX-4.23.0.linux someone mentioned above doesn’t work for me.
This comment has been minimized.
Copy link Quote reply
K1ngjulien commented Mar 25, 2019 •
@VictorTagayun
Save the following code in
And don’t forget the icon in
/.local/share/applications/icons/stm32cubemx.png or change the paths in the .desktop -file accordingly.
Hope this helps 🙂
This comment has been minimized.
Copy link Quote reply
symdeb commented Sep 14, 2019
Above solutions don’t work for CubeProg (Ubuntu 19.04 Linux x64)
sudo ./SetupSTM32CubeProgrammer-2.1.0.linux
Error: Unable to access jarfile SetupSTM32CubeProgrammer-2.1.0.exe
Sudo java -jar SetupSTM32CubeProgrammer-2.1.0.linux
Error: Invalid or corrupt jarfile SetupSTM32CubeProgrammer-2.1.0.linux
This comment has been minimized.
Copy link Quote reply
simonsunnyboy commented Dec 3, 2019
Above solutions don’t work for CubeProg (Ubuntu 19.04 Linux x64)
sudo ./SetupSTM32CubeProgrammer-2.1.0.linux
Error: Unable to access jarfile SetupSTM32CubeProgrammer-2.1.0.exeSudo java -jar SetupSTM32CubeProgrammer-2.1.0.linux
Error: Invalid or corrupt jarfile SetupSTM32CubeProgrammer-2.1.0.linux
Use the windows .exe instead. The .linux file is only for old 32bit architectures and does not run anymore on AMD64 systems (if i understood correctly)
It worked fine for me on Ubuntu 18.04 here. I renamed the .exe to .jar to make sure.
This comment has been minimized.
Copy link Quote reply
Lanchon commented Dec 3, 2019
however, there are quite a few GUI menu editors you can easily install from the ubuntu repos, such as MenuLibre. try them!
This comment has been minimized.
Copy link Quote reply
vincentl-dev commented Apr 17, 2020
Hello and thanks to all. I could follow simonsunnyboy & kingjulien advices and install on Ubuntu 19.10 latest version of CubeMX (5.6.1)
Everythings works ok (Design & code generation) , However update from the CubeMX make the tool freeze, I have to reboot the machine.
Since I run Linux from VirtualOrg, it could be virtual machine settings not cubeMX tool. Can anybody with a real linux machine has update working fine ? (Please note all my internet browser, mails are working fine in my Ubuntu virtual machine).
Thanks a lot !
This comment has been minimized.
Copy link Quote reply
simonsunnyboy commented Apr 17, 2020 •
Hello and thanks to all. I could follow simonsunnyboy & kingjulien advices and install on Ubuntu 19.10 latest version of CubeMX (5.6.1)
Everythings works ok (Design & code generation) , However update from the CubeMX make the tool freeze, I have to reboot the machine.
Since I run Linux from VirtualOrg, it could be virtual machine settings not cubeMX tool. Can anybody with a real linux machine has update working fine ? (Please note all my internet browser, mails are working fine in my Ubuntu virtual machine).
Thanks a lot !
I just tried the update here on a real linux machine. It installed an update of the Cube to V5.6.1 without issues.
Priviliges can be of concern.
I made sure to install the CubeMx here with my user priviliges on a folder with my user acces rights.
A popup with adminstrator restart came up but I safely ignored that one. No need no login or sudo, I just restarted the CubeMX GUI as my regular user and it worked for me.
Addendum I also did not a sudo install of the original package IIRC.
This comment has been minimized.
Copy link Quote reply
vincentl-dev commented Apr 17, 2020
thanks simonsunnyboy. Since you shared STM32CubeMX’s update were working fine on a «real» linux, I ‘ve tried a bit to play around with VirtualBox’s setting. Then i’ve seen in readme of the tool that it was a java 32 bits software. So i’ve installed 32 bits version of JRE
sudo apt-get install default-jre:i386
and «Voila !» STM32CubeMX update were suddently working.
The STM32CubeMx however trigs me a message telling it is not happy to have 32 bits JRE installed in 64 bits Linux.
sudo apt-get install default-jre
allow me to get rig of it.
So in the end I guess STM32CubeMX is finding what it need for the java. I must have some bits of jre 32 bits and 64 bits in my system.
I am definitly not llinux expert so sorry guys cannot really explain why it is working but only what I did to have it work !
good night !
This comment has been minimized.
Copy link Quote reply
photon-delight commented Jun 2, 2020 •
Above solutions don’t work for CubeProg (Ubuntu 19.04 Linux x64)
sudo ./SetupSTM32CubeProgrammer-2.1.0.linux
Error: Unable to access jarfile SetupSTM32CubeProgrammer-2.1.0.exeSudo java -jar SetupSTM32CubeProgrammer-2.1.0.linux
Error: Invalid or corrupt jarfile SetupSTM32CubeProgrammer-2.1.0.linux
One needs to extract both the .linux and .exe files. My mistake was that I assumed that only the .linux was necessary to extract. Once both of these files have been extracted, ./SetupSTM32CubeProgrammer-2.4.0.linux works as it should
This comment has been minimized.
Copy link Quote reply
mianqi2016 commented Feb 27, 2021
I have downloaded STM32CubeMX for Linux, and extracted it on Ubuntu 20.04, and double-click the setup file, no error prompted, but I couldn’t launch it, how to?
This comment has been minimized.
Copy link Quote reply
emha69 commented Apr 29, 2021
Current version (6.2.0) installs normally on Ubuntu, however you need to install JDK 11 first:
sudo apt install openjdk-11-jre
Then start installer with sudo and at the end change the ownership of all files in the selected folder
chown -R user.user STM32CubeMX
Note, that you will need to start CubeMX as root in order to finish the update to version 6.2.1 and repeat chown -R . afterwards.
This comment has been minimized.
Copy link Quote reply
photon-delight commented Apr 30, 2021 •
One does not need to install the JDK anymore — it seems to be included in the latest archive from ST. I just installed both STM32CubeIDE and CubeProgrammer on a fresh Ubuntu 20.04 without installing any Java. ST has also updated their software install instructions, which work fine for Ubuntu 20.04
This comment has been minimized.
Copy link Quote reply
willcmc commented May 18, 2021
As of version 6.2.1, the provided Linux installation package on ST’s website is designed for and tested on 64-bit systems, and (from what I gather) works only on a 64-bit system (sorta redundant to state, since ubuntu 20.04 only comes in 64-bit). And yes, no need for JDK, it is bundled with the package.
This comment has been minimized.
Copy link Quote reply
willcmc commented May 18, 2021
I have downloaded STM32CubeMX for Linux, and extracted it on Ubuntu 20.04, and double-click the setup file, no error prompted, but I couldn’t launch it, how to?
Have a look at the Readme.html, there are comprehensive instructions for each OS.
This comment has been minimized.
Copy link Quote reply
emha69 commented May 18, 2021 •
Current version (6.2.0) installs normally on Ubuntu, however you need to install JDK 11 first:
sudo apt install openjdk-11-jre
Installation of JDK was required on Ubuntu 18.04.3 64-bit. Forgot to mention the version.
I have downloaded STM32CubeMX for Linux, and extracted it on Ubuntu 20.04, and double-click the setup file, no error prompted, but I couldn’t launch it, how to?
Check your user’s permissions of the folder and sub-folders, where the IDE was installed. Start IDE from the terminal as normal user, you will see in the output where is the problem (or paste it here).
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник
Установка STM32CubeIDE на Linux
он весьма тормознутый, поэтому на всякий случай перезалил в облако (cкачать версию STM32CubeIDE 1.5 без регистрации):
1) Распаковываем файл st-stm32cubeide_1.50.sh из архива, двойное нажатие по нему приведет к созданию папки с таким же именем.
2) Открываем папку, она будет содержать различные файлы (может придется подождать десяток сек):
3) Запускаем терминал ( Ctrl + Alt + T) и пишем путь к создавшейся папке (можно скопировать из строки сверху):
4) Теперь меняем права (это может и не понадобится) и вводим пароль, который запросит:
sudo chmod a+x install.sh
5) Далее непосредственно запускаем файлик установки:
6) Появляется лицензионное соглашение, жмём Ввод (Enter), пока оно не закончится. Принимаем его (прописав игрек в командной строке):
6)Указываем путь установки (папку создавать не нужно):
7) Ждём, пока установится. Высветится окно для ввода пароля, вводим.
8) Откроется окошко с установкой SEGGER J-Link и спросит продолжать ли (Do you wish to continue?). Пишем:
9) Теперь листаем долгий текст (Enter) и соглашаемся со всем (Do you agree with the terms of this license?):
10) Скорее всего таким же образом будет установка двух программ: ST-Link и ST-Link Server.
На этом всё, можно использовать бесплатную среду разработки для программирования микроконтроллеров STM32 на бесплатной операционной системе Linux.
Источник