Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SPL - глюки в библиотеке
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Quantum1
Добрый день!

Работаю в Keil.
Пытаюсь использовать SPL для stm32f103.
При включении в проект некоторых хедеров(к примеру gpio), начинается ахтунг.
//////////////////////////////

C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(27): error: #256: invalid redeclaration of type name "sc32" (declared at line 474 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(31): error: #256: invalid redeclaration of type name "vs32" (declared at line 478 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(35): error: #256: invalid redeclaration of type name "vsc32" (declared at line 482 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(39): error: #256: invalid redeclaration of type name "u32" (declared at line 486 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(43): error: #256: invalid redeclaration of type name "uc32" (declared at line 490 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(47): error: #256: invalid redeclaration of type name "vu32" (declared at line 494 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(51): error: #256: invalid redeclaration of type name "vuc32" (declared at line 498 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(57): error: #101: "RESET" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(57): error: #101: "SET" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(57): error: #256: invalid redeclaration of type name "FlagStatus" (declared at line 502 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(57): error: #256: invalid redeclaration of type name "ITStatus" (declared at line 502 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(59): error: #101: "DISABLE" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(59): error: #101: "ENABLE" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(59): error: #256: invalid redeclaration of type name "FunctionalState" (declared at line 504 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(62): error: #101: "ERROR" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(62): error: #101: "SUCCESS" has already been declared in the current scope
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(62): error: #256: invalid redeclaration of type name "ErrorStatus" (declared at line 507 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_conf.h(147): warning: #47-D: incompatible redefinition of macro "HSE_Value" (declared at line 511 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(30): error: #55: too many arguments in macro invocation
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(30): error: #79: expected a type specifier
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(31): error: #55: too many arguments in macro invocation
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(31): error: #79: expected a type specifier
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(32): error: #55: too many arguments in macro invocation
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\cortexm3_macro.h(32): error: #79: expected a type specifier
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(58): error: #256: invalid redeclaration of type name "ADC_TypeDef" (declared at line 547 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(154): error: #256: invalid redeclaration of type name "BKP_TypeDef" (declared at line 646 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(163): error: #256: invalid redeclaration of type name "CAN_TxMailBox_TypeDef" (declared at line 658 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(171): error: #256: invalid redeclaration of type name "CAN_FIFOMailBox_TypeDef" (declared at line 670 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(177): error: #256: invalid redeclaration of type name "CAN_FilterRegister_TypeDef" (declared at line 680 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(203): error: #256: invalid redeclaration of type name "CAN_TypeDef" (declared at line 714 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")

////////////////////////////////////


И Keil совершенно прав! Действительно дублирование есть. Если подключать хедеры где нет этого злосчастного \stm32f10x_type.h то все компилиться и работает на железе без проблем. Как только хоть кто то о нем заикнется начинается фиерия*))

Пытался закоментить все повторные декларации, но тогда компилятор перестает их видеть и оригинальные почему то...
SPL свежая...

Подскажите что делать...

Заранее спасибо!
Golikov A.
#ifndef SOME_UNIT
#define SOME_UNIT


#endif

?
Quantum1
не понял... а какой смысл то в этом, все равно в таком случае одна из инициализаций пропадет и будет тоже самое что просто лишнюю вырезать\закоментить...

Да и неужели родная библиотека требует таких жестких допилок... тут какая то маленькая, но глобальная грабля*)
andrewlekar
Добавьте, лишним не будет. Я где-то подобным образом CMSIS допиливал.
demiurg_spb
У вас какая-то слишком древняя библиотека.
В последних версиях уже не используются подобные vsc32 типы данных.
Рекомендую скачать свежий CMSIS и свежую периферийную библиотеку ну и свежий keil заодно.
KnightIgor
Цитата(Quantum1 @ Jul 22 2014, 21:02) *
Добрый день!

Работаю в Keil.
Пытаюсь использовать SPL для stm32f103.
При включении в проект некоторых хедеров(к примеру gpio), начинается ахтунг.
//////////////////////////////

C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
...
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_conf.h(147): warning: #47-D: incompatible redefinition of macro "HSE_Value" (declared at line 511 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
...
C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x_map.h(58): error: #256: invalid redeclaration of type name "ADC_TypeDef" (declared at line 547 of "C:\Program Files\Keil\ARM\Inc\ST\STM32F10x\stm32f10x.h")
...
\stm32f10x.h")
SPL свежая...
Подскажите что делать...


SPL не свежая, точнее, Вы смешали версию 2 и 3 SPL: вышевыделенные заголовки - из версии 2, а в 3 их нет.
Скорее всего Вы компилируете старый пример. Возьмите новые.
Quantum1
у меня стоит Keil 4.23 - новее не могу поставить из-за программатора.

библиотеку качал с сайта stm т.е. она точно самая свежая

Цитата(KnightIgor @ Jul 23 2014, 12:18) *
SPL не свежая, точнее, Вы смешали версию 2 и 3 SPL: вышевыделенные заголовки - из версии 2, а в 3 их нет.
Скорее всего Вы компилируете старый пример. Возьмите новые.


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


если не трудно дайте пожалуйста ссылку на 3 версию
KnightIgor
Цитата(Quantum1 @ Jul 23 2014, 20:10) *
компилю я свою прогу которая до подключения некоторых хедеров прекрасно компилилась и работала.
если не трудно дайте пожалуйста ссылку на 3 версию

Библиотека
Миграция
kan35
Может быть вы включаете gpio.h в своем файле? если так, то не правильно. У вас должен быть включен в ваших файлах только stm32fxxx.h а из него подключается все остальное. В частности вся доп периферия включается в ***_conf.h
antis
Попробуйте в настройках проекта в вкладке "С/С++" поставить галку на "No auto includes".

Quantum1
Да действительно! Дело оказалось в библиотеке. Поковырял Кейл выкинул все старые файлы, закинул свежие. И все стало норм! Всем спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.