26 February 2014

STM32CubeMX — продвинутый генератор проектов для STM32

Programming microcontrollers
Пару недель назад STMicroelectronics выкатили обновление своей программы MicroXplorer, которая позволяла графически настроить инициализацию портов в конкретном STM32 для своих нужд, в том числе и делать ремап портов и визуально видеть что занято\свободно на текущий момент.
Выглядела эта программа следующим образом:
image
И позволяла на выходе получить *.c, *.h файлы в которых содержались функции по инициализации портов в соотвествии с заданными требованиями с использованием Standard Peripheral Library.
Что же решили изменить на этот раз?

А на этот раз в эту утилиту ST решили добавить полноценную генерацию проектов для следующих сред:
  • TrueSTUDIO 4.3.1
  • MDK-ARM 4.73
  • EWARM 6.7
  • GCC

Переименовали SPL в HAL (High Access Level), добавили Middle Wares (FreeRTOS,Fatfs от Чана, USB классы итд), инструмент конфигурации частоты работы в виде графической утилиты теперь сразу в программе есть, а не как раньше в эксель файле, и еще добавили интересный инструмент который они назвали Калькулятор Расхода Энергии — позволяет примерно рассчитать потребление энергии МК в зависимости от условий и задач и примерно узнать сколько он проработает от того или иного типа питания.

Это были ложки меда. А теперь бочки дегтя.
Программа имеет 2 типа поставки — standalone и как плагин к eclipse. Так вот, оба эти варианта работают только под windows. И функционально друг от друга не отличаются.
Заявляемой поддержки GCC я не нашел, видимо на текущий момент не реализовали, хотя в библиотеки файлы стартапов GCC имеются, почему не сделали — не ясно.
На текущий момент полноценно работает только F4 линейка.
UPD 06.04.14: Появилась поддержка F2.

Рассмотрим работу программы на конкретном простом примере:
После установки программы, нужно в меню Help -> Install New Libraries установить один доступный пак на текущий момент для STM32F4.

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

Доступных действий, как видно, не много.

Делаем новый проект:

Тут выбираем нужный нам чип или подбираем по нужным параметрам в фильтре слева.
Спасибо DEHiCKA за дополнения.

Вот так выглядит собственно основной экран конфигурации пинов:

Тут я выбрал SDIO (для работы с SD картов), пару пинов АЦП, SPI, USART и несколько обычных пинов сконфигурировал вручную. Стоит сказать, что для каждого варианта есть масса доступных вариантов настройки, так что все может быть изменено по вашему желанию без проблем.

Далее идет закладка работы с тактированием:

Если вы в конфигурации задавали настройки внешнего кварца, то тут будет возможность ввести их значения.
Спасибо DEHiCKA за дополнения.

Окно конфигурации:

Тут в зависимости от того, что мы выбрали будут отображаться доступные настройки. Как видно, в данном случае я выбрал что я буду использовать USB как CDC класс (Com порт), SD карту, и FATFS что бы работать с файловой системой на этой карте.
Отмечу, что на каждую из кнопок можно кликать и менять уйму доступных настроек, вот например некоторые настройки доступные для конфигурации USB:

и АЦП:


Следующая заклада к самому проект и тому что будет сгенерировано отношения не имеет, но может быть полезна кому-то для расчетов потребления энергии конкретного девайса:

Тут мы в таблицу должны добавить источники потребления, как часто они происходят и другие параметры, влияющие на потребление, выглядит это так:


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


Конечно же, открываем его и собираем:

Как видно, все открылось и собралось без каких либо трудностей.

Заключение

Стоит сказать, что конкретно я не являюсь поклонником систем генерирования чего либо. И причин этому несколько.
Во первых, генератор проекта никак не освобождает вас от чтение даташитов. Наоборот, если что то не будет работать так как вы ожидаете, вы будете долго и упорно искать проблему, не понимая природу ее появления. В генераторе самом могут содержаться ошибки, и они все успешно перейдут на ваши проекты.
Во вторых, подобные вещи абстрагируют проектировщика от конкретного устройства, и вряд ли человек разберется как работать с USB и почему происходит это именно так, а не иначе только потому что он использовал генератор проекта и успешно подтянул все библиотеки.
Что касаемо данного продукта, то стоит сказать что он пока еще очень сырой, нет поддержки не проприетарных IDE, STM32F0,F2,F3, не windows платформ. Но посмотреть для общего развития стоит, например FATFS можно успешно использовать в своих проектах. В конечно счете, что и как использовать решаете только вы сами.

Материалы по теме

1. Страница проекта STM32CubeMX
2. Увесистый мануал к программе на 127 страниц
3. Firmware с HAL и Middle Wares, для тех кому нужны просто библиотеки без генератора
4. Сгенерированный проект
Tags:stm32генератор кодаstm32cubemx
Hubs: Programming microcontrollers
+33
66.9k 216
Comments 8
Popular right now
Top of the last 24 hours