Перейти к содержанию
    

Keil 5.17 error #247 (ошибка - переопределение #define)

Столкнулся с граблями переноса проекта Keil с одного камня (stm32l151xxx) на другой (stm32f427xxx).

После замены всех хидеров SMSIS с L151 на аналогичные F427 выдается ошибки типа:

C:\Keil_v5\ARM\PACK\ARM\CMSIS\4.5.0\CMSIS\Include\cmsis_armcc.h(57): error:  #247: function "__get_CONTROL" has already been defined

общее их количество за 500 шт...

Это как-то связано еще с версией библиотек CMSIS, во всяком случае для L151 используется core_cm3.h V3.01, а  для F427 core_m4.h V4.01...

В core_cm3.h V3.01 ссылок на cmsis_armcc.h просто нет...

Вот тут похожая ситуация, описывается переход с 4.3.0 на 4.5.0 библиотеку, но не понятно как он ее решил...

Никак не могу понять как нужно модифицировать проект, чтобы убрать дублирование объявлений.

Прошу пнуть в нужном направлении.

(поиском ничего похожего нигде не нашел)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Починил ...

Есть две библиотеки STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 и STM32L1xx_StdPeriph_Lib_V1.3.1

(качались с сайта STM, но в разное время)

Естественно не вдаваясь в подробности меняя в проекте камень меняю, кроме хидеров перефирии и core_m3.h (V1.3.1) на core_m4.h (V1.8.0),  логично?

Так вот этого делать не нужно, необходимо было оставить V1.3.1 (т.е. из библиотеки STM32L1xx_StdPeriph_Lib_V1.3.1) !

Это как-то связано с организацией проектов, когда все хидеры библиотек копируются  в  локальные директории конкретного проекта.

В более новых файлах (от 2015-16г) CMSIS есть ссылки на cmsis_armcc.h, который существует в библиотеках самого Keil.

 

-----------

Тогда возникает законный вопрос, тянущий на целую тему:

Как правильно обновлять библиотеки в Keil (использовать их новые версии), чтобы подобные конфликты не возникали?

Изменено пользователем Dimy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 minutes ago, Dimy said:

Тогда возникает законный вопрос, тянущий на целую тему:

Как правильно обновлять библиотеки в Keil (использовать их новые версии), чтобы подобные конфликты не возникали?

 

Собирать проекты вручную. Никаких pack-ов, никаких CMSIS-овских надстроек в среде (именно в среде).

У меня, например, в проекте есть отдельная папка System, в которой находятся файл startup, некоторые системные файлы проекта, а также папка CMSIS, в которой находятся все нужные заголовочные файлы CMSIS. Библиотеки периферии (если использую) хранятся в другой папке наравне с System (в одной директории). Если мне надо обновить версию SPL или CMSIS (хотя не понятно, на кой черт) - достаточно заменить папку CMSIS и SPL на свежие. Проект от этого не сломается и все так же соберется без ошибок и предупреждений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...