Пользователь
0,0
рейтинг
26 февраля 2014 в 11:58

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

Пару недель назад 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. Сгенерированный проект
Евгений Мурашко @JekaKey
карма
12,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (8)

  • +1
    Да, сыроват продукт. Поковырял дня три назад из интереса. Не любитель подобных вещей (я о генераторе), тем не менее, расталкивать периферию по ногам все же удобно.
    С чем, впрочем, вполне справлялся и старый microXplorer.
  • +1
    Вот я даже не знаю, хорошо это или плохо. С одной стороны, настройка периферии с SPL уже не способствовала глубокому пониманию происходящего (просто меняешь код примеров и все). С другой — если меняешь неправильно, закапываться в даташиты все же приходилось.

    А теперь, видимо, вообще можно не заглядывать?

    В то же время, периферии и настроек у stm столько, что для глубокого понимания всего ушли бы годы…

    Наверное, все же хорошо. Удобно должно быть, как минимум.
    • +1
      У STM32 действительно настроек периферии более чем предостаточно. Недавно подключал SD карту к stm32f0 и долго не мог понять почему нормально не работает — оказалось дело в SPI:
      вначале по дефолту передавалось 2 байта (16 бит, т.к. регистр 16-ти битный) вместо одного, потом были проблемы с чтением (опять же 16-ти битный регист + входной буфер).
      А с помощью подобной вещи (генератор) можно было бы сгенерить пример проекта, сравнить со своим и сэкономить много времени на изучении всех тонкостей работы SPI
  • +1
    Опять же, то ли я не понял что-то, то ли действительно не доработано, но частоту кварцев поменять у меня не получилось, то есть доступны только делители.

    Для начала включите использование внешнего кристалла в разделе RCC

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

    Это просто фильтр быстрого выбора проца по наличию периферии, а не выбор самой периферии. К примеру, какой из уартов включать, если вам нужен всего один?

    Обидно, что выбешивающий баг с закрытием программы при скролле мышкой так и не исправили.
    • 0
      Спасибо за пояснения! Действительно я не разобрался, поправлю статью соответствующим образом.
      А что за баг с закрытием при скролле? У меня не появлялся ни разу, в каком то конкретно окне происходит?
      • 0
        Выберите функцию для любой ноги на картинке или из списка и проскрольте мышкой список pinout. Если были изменения, предложит сохранить и выйти, если не было, то молча закроется.
  • +1
    Я попытался поюзать эту шткуовину и, пожалуй, должен отметить несколько заметных недостатков:

    1) Потеря совместимости со старой Standart Peripheral Library. Функции из HAL и называются по-другому (как минимум, они начинаются со слова «HAL») и логика тоже поменялась. Теперь к проекту с HAL невозможно даже подцепить файл для настройки тактирования, который генерирует STM Clock Tool.

    Попытавшись прикрутить HAL к старому проекту, я заметил серьезные изменения, например, в с USART — теперь нам предлагается использовать функции аля UartSend / UartReceive, которые библиотека предоставляет. И надеятся, что багов в них нет.

    Т.е. старый код придется переписывать.

    2) Отсутствие документации вообще и примеров для работы в частности. По крайней мере, что-то найти у меня пока что не получилось. У SPL с документацией тоже было не слишком радужно, но хотя бы были примеры. Тут — вообще голяк.

    3) Быстро пробегая глазами код, я обнаружил баг с переполнением в функции HAL_Delay. Отношение к HAL сменилось на настороженно-недоверчивое (кстати, если кто-нибудь знает, куда можно сделать баг-репорт — подскажите пожалуйста).

    Возможно, я несколько спешу с выводами, но пожалуй переходить на HAL еще рановато.
  • 0
    Жаль, что STM32CubeMX по умолчанию не генерирует файлы для Eclipse. Можно максимально упростить себе жизнь воспользовавшись скриптом, описанным здесь. У меня возникли некторые проблемы с его использованием под Windows и описал мой путь здесь (в самом конце)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.