_dark_ 0 26 октября, 2018 Опубликовано 26 октября, 2018 · Жалоба Столкнулся с граблями переноса проекта 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 библиотеку, но не понятно как он ее решил... Никак не могу понять как нужно модифицировать проект, чтобы убрать дублирование объявлений. Прошу пнуть в нужном направлении. (поиском ничего похожего нигде не нашел) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_dark_ 0 26 октября, 2018 Опубликовано 26 октября, 2018 (изменено) · Жалоба Починил ... Есть две библиотеки 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 (использовать их новые версии), чтобы подобные конфликты не возникали? Изменено 26 октября, 2018 пользователем Dimy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 26 октября, 2018 Опубликовано 26 октября, 2018 · Жалоба 26 minutes ago, Dimy said: Тогда возникает законный вопрос, тянущий на целую тему: Как правильно обновлять библиотеки в Keil (использовать их новые версии), чтобы подобные конфликты не возникали? Собирать проекты вручную. Никаких pack-ов, никаких CMSIS-овских надстроек в среде (именно в среде). У меня, например, в проекте есть отдельная папка System, в которой находятся файл startup, некоторые системные файлы проекта, а также папка CMSIS, в которой находятся все нужные заголовочные файлы CMSIS. Библиотеки периферии (если использую) хранятся в другой папке наравне с System (в одной директории). Если мне надо обновить версию SPL или CMSIS (хотя не понятно, на кой черт) - достаточно заменить папку CMSIS и SPL на свежие. Проект от этого не сломается и все так же соберется без ошибок и предупреждений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться