Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование одной копии mbed для нескольких проектов
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
MicroCpehalis
Сейчас пытаюсь воспользоваться библиотекой mbed (конкретно - под STM32F4XX) сразу в двух проектах. Изначально думал, что можно положить библиотеку куда-нибудь, и пользоваться ею в обоих проектах одновременно, ничего не меняя. Но вот понял, что, чтобы задействовать, скажем, UART, необходимо, чтобы в HAL-файле device.h макрос DEVICE_SERIAL был равен "1" (тогда как он там по умолчанию "0").

Положим, я заменю в этом файле 0 на 1 - но это, во-первых, окажет влияние и на другой проект, в котором мне UART не нужен, а во-вторых, лезть менять файлы в чужой библиотеке?... как-то не комильфо.

И вот я не вижу выхода из этой ситуации, кроме как копировать все необходимые файлы набора HAL в каждый из двух проектов, и компилировать их уже из этих локальных копий. А это как-то некрасиво - там куча .c-шных файлов, в которых я ничего менять не собираюсь да и не должен. Но они все завязаны на "лежащий тут же" device.h. Попытка редефайнить DEVICE_SERIAL предсказуемо приводит к ругани со стороны компилятора, попытка предварительно #undef-ить макрос в настройках проекта - к тому, что "идентификатор не определен", и это правильно: соответствующий h-ник не транслируется.

Получается, таки локальная копия всего HAL (а заодно уж, может, и startup_STM32F40x.s+sys.cpp+STM32F407.sct из target-toolchain директории cmsis) - единственный путь, или я чего-то не понимаю в методике использования mbed?

MicroCpehalis
Ситуация оказалась хуже, чем я думал. Похоже, значение этих макросов определяется тем, какое вообще оборудование стоит в том или ином контроллере. То есть, по мнению разработчиков mbed, в STM32F4XX (и, в частности, в моем STM32F417VGT6) вообще отсутствует последовательный порт. И даже файла serial_api.c в папке TARGET_STM32F4ХХ нет. При этом в соседней папке TARGET_STM32F4 такой файл есть, и соответствующий макрос в device.h определен как "1". Судя же по описаниям контроллеров на сайте STM, в любой модификации STM32F4ХХ есть по меньшей мере пара-тройка последовательных портов.

То есть первоначальный вопрос отпадает: вполне можно было бы использовать библиотеку в двух проектах сразу. Возникает другой: в чем разница между таргетами STM32F4 и STM32F4ХХ, и почему для одного считается, что последовательный порт есть, а для другого - что нет? Сколько ни пытаюсь читать интернет, везде эти понятия смешиваются и/или заменяются по тексту одно другим в произвольные моменты времени. Но, очевидно, некая разница есть . Кто-нибудь в курсе, в чем она состоит?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.