Top.Mail.Ru

Часть 2. STM32 и С++. Как избавиться от HAL и перейти на С++.

Примечание: Предусматривается, что компьютер знают все, и рассказывать, где какая кнопка находится, я не буду.

Среда разработки: CubeMX, CubeIDE. Всегда последней версии.

Микроконтроллеры: серия STM32.

В прошлой статье я показал файловую структуру проекта. Чтобы не возникало вопросов, объясню почему я пришёл именно к такой структуре:

  • Все проекты хранятся в одном каталоге.
  • В каждом каталоге содержится всё, что относится к нему: схемы, платы, техническое задание, код, исходные и справочные материалы.
  • Библиотеки для МК.

Сначала, когда я только начинал, я копировал библиотеки в каталог с кодом. Но, когда количество проектов и МК сильно увеличилось, я начал путаться в библиотеках. Часть из них усовершенствовал, часть изменил, а растолкать по проектам забывал. Из-за этого происходила огромная путаница и потеря наработок. Поэтому я и выделил библиотеки в отдельный каталог, а если собираюсь писать новую или модернизировать старую, то текущий каталог с библиотеками я архивирую и обязательно оставляю комментарий, что в нём собираюсь менять.

Так как библиотеки и проекты хранятся в одном каталоге, их удобно переносить с компьютера на компьютер. Позже будет показана маленькая хитрость, позволяющая копировать данный каталог с проектами на любой диск, с любой буквой, и ничего не будет теряться и будет работать дальше. Только одно условие. Данные каталоги должны быть относительно друг друга именно в таком порядке. А теперь продолжим...

У нас есть два пути:

  1. Сделать так, чтобы каталог проектов MTWorkDevel можно было перемещать на любой диск целиком и свободно работать над проектом;
  2. Каталог проектов привязать к определённому диску, но каталог конкретного проекта можно записывать куда угодно.

Перед тем, как рассмотрим варианты, давайте ещё немного позанимаемся удалением. Удаляем каталог Drivers:

И ещё один лишний файл:

Переходим в настройки проекта, и в указанных пунктах, при указанных опциях, удаляем ссылки на каталоги, отмеченные синим (обратите внимание на выделенные позиции):

Вариант №1.

Переходим в Source Location и нажимаем кнопку "Link Folder". Если данной закладки нет, нужно нажать "Apply and Close" и открыть настройки заново (этот глюк ещё не устранили):

Ставим галочку, нажимаем кнопку "Browse" и выбираем папку с каталогом с ядра:

Начинаем прописывать пути (обратите внимание на выделенные позиции):

Если посмотреть внимательно, то путь прописан не так "C:/WorkDevel/STM32Lib/Device/Stm32F4xx", а "../../../../STM32Lib/Device/Stm32F4xx". Что это даёт? В первом случае вы путь библиотек жёстко привяжете к месту на определённом диске и при переносе проекта на другой компьютер будете получать сообщения, что каталоги не найдены. Во втором случае "/.." означают перейти на каталог выше. Таким образом мы задаём относительный путь для наших библиотек. Как вычислить этот путь?

Наш код находится в Src. Чтобы попасть в каталог Developer, нужно перейти на 4 шага выше. Отсюда у нас идёт цепочка из 4 шагов "../../../../". Далее уже название самого каталога. Результирующая цепочка - "../../../../STM32Lib/Device/Stm32F4xx". То же самое и для файлов библиотек, независящих от ядра МК.

Указывать нужно именно каталог, где находятся библиотеки. Файлы с кодом компилятор ищет сам, если я не путаю - в каталогах Src и Source (кому интересно, может проверить сам).

Переключаем конфигурацию на Release и нажимаем кнопку "Add Folder":

Добавляем указанные каталоги, это позволит компилировать нам и в конфигурации Release:

Теперь можно нажимать кнопку "Apply" и "Apply and Close". Почему именно так? В ранних версиях CubeIDE был глюк. Не нажмёшь "Apply", изменения не сохранятся. В начале я предупреждал, что всегда пользуюсь самыми свежими версиями программного обеспечения, но, если кто-то пользуется старой версией, может наступить на эти грабли.

У нас появятся линки на эти каталоги:

Примечание: ссылки не редактируются, только удаление