Проект STM32 HAL на C++

Если вы как я любитель писать на C++ для микроконтроллеров STM32, то наверняка в курсе данной проблемы, а именно то, что при использовании утилиты CubeMX генерируется HAL проект только с поддержкой Си, тогда как HAL в принципе поддерживает C++.

Я использую Atollic TrueSTUDIO в разработке и соответственно импорт из CubeMX делаю в него и в итоге получаю Си проект с HAL. Но у меня овердофига готовых классов на C++, которые я хочу добавить в проект, и мне нужен проект C++. Сконвертировать проект на самом деле не сложно и делается это в 3 простых шага:

  1. Для начала копируем содержимое main.c в main.cpp и удаляем main.c (Важно, не пытайтесь оставить оба файла в проекте).
  2. Далее добавьте в .project файл проекта в секцию <natures> строку <nature>org.eclipse.cdt.core.ccnature</nature> Atollic true studio c++ project convert
  3.  Следующим шагом дублируем соответствующие настройки Си проекта в C++ как показано ниже:
Atollic c++ build settings
Копируем внимательно, чтобы не забыть ни одной строки

Собственно тоже самое проделывается с настройками Symbols, Optimiztion и т.д., если есть необходимость.

Теперь проект просто необходимо закрыть и открыть заново. чтобы изменения вступили в силу. В результате получаем: все компилируется и линкуется без ошибок, отладка работает корректно, из main.cpp вызывается HAL код и HAL callback функции могут вызываться в .cpp файлах.

Модификатор extern «C»  может быть необходим в .cpp файлах, если .cpp сторона вызывает функции на стороне .c кода или из .c кода вызывается callback функция, определенная в .cpp файле.

Если вы выполняете повторную генерацию проекта из CubeMX для внесения изменений данные изменения попадут в main.c и не попадут в main.cpp, поэтому необходимо их вносить вручную.

На этом вроде все, если когда-нибудь появится хак, который будет делать все это автоматически будет очень неплохо, а пока делаю все ручками)

Спасибо, что дочитали до конца. Подписывайтесь на мой канал в telegram, чтобы не пропустить анонсы новых статей.

6 Ответов в “Проект STM32 HAL на C++

  1. Кнопки соцсетей закрывают часть текста слева, невозможно читать…

    1. чтобы эта дрянь пропала, подведите к ней снизу курсор, появится серая стрелочка влево, давите ее мышом.

  2. В SW4STM32 можно было просто сконвертировать СИ проект в С++. Жаль что здесь нельзя.

  3. я просто меняю расширение файла в кубике. пока, вроде, все хорошо. Хотелось бы чтобы сгенерированные файлы были С++

Комментарии отключены.