Реле Tianbo - ресурс 10 млн переключений

Различаются определения ADC_TypeDef в файлах stm32f10x_cl.h и stm32f10x_map.h

Новичок
 
Регистрация: 06.04.2016
Сообщений: 4
Репутация: 10
0 1
0 0
 
22.04.2016 16:58 #1
Добрый день!

При компиляции проекта STM32 в IDE Keil различаются определения ADC_TypeDef в файлах stm32f10x_cl.h и stm32f10x_map.h.

Компилятор выдает ошибку:

"stm32f10x_cl.h(153): error: #256: invalid redeclaration of type name "ADC_TypeDef" (declared at line 58 of "..\STM32_MCD\inc\stm32f10x_map.h")
} ADC_TypeDef;"

Подскажите, в чем дело?
Оценка
В многообразии литиевых батареек и аккумуляторов нет какого-то универсального или идеального варианта. Выбирая тот или иной вариант для питания устройства, разработчику приходится оперировать множеством параметров, используя наиболее оптимальное их сочетание для каждого приложения. Разберем параметры для различных приложений.
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
372 0
3 0
 
22.04.2016 18:19 #2
Цитата:
Сообщение от Sable
error: #256: invalid redeclaration of type name "ADC_TypeDef"
Возникновение ошибки 256 возможно по ряду причин. Исходя из того, что все нужные файлы добавлены в проект, вот стандартные подходы к разрешению проблемы:
-убедиться, что в проекте нет смешанных версий используемых библиотек (в разных версиях конкретной библиотеки файлы .c и .h могут иметь разную структуру и имена); как следствие убедиться, что Keil работает с файлами только из нужных папок (проверить пути в настройках проекта), иначе возможная ситуация, когда часть фалов будет обрабатываться из собственных папок Keil'a (по умолчанию), а часть браться из проекта. Как раз тут несовпадение версий библиотек может вызвать казус вроде переопределения имени, хотя на самом деле в более новой версии его перенесли в другой файл и т.п.
-проверить цепочку #include'ов с тем, чтобы отыскать возможное дублирование (в данном случае ADC_TypeDef определён исходно в stm32f10x_map.h);
-как следствие проверить, не определяется ли один и тот же проблемный тип дважды в каком-либо файле.
Оценка
Новичок
 
Регистрация: 22.12.2016
Сообщений: 3
Репутация: 10
0 1
0 0
 
22.12.2016 19:49 #3
Где найти библиотеку STM32F10x_map.h? Проект стоит из-за неё, гугл молчит. Помогите!
Оценка
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
372 0
3 0
 
22.12.2016 20:35 #4
Вот первая ссылка из google на проект с этим файлом:
http://contiki.sourceforge.net/docs/...93_source.html

Вообще, в любом достаточно старом проекте с github, например, можно найти stm32f10x_map.h.

Но стоит обратить Ваше внимание на то, что начиная где-то с 2009 года в более поздних версиях библиотек периферии для STM32 этот файл переименован в stm32f10x.h

stm32f10x_map.h -> stm32f10x.h

Сравните их заголовки и структуру. В пристёжке stm32f10x.h из библиотеки STM32F10x standard peripheral library v.3.5.0.
Вложения
Тип файла: zip stm32f10x_map.zip (49.7 Кб, 0 просмотров)
Тип файла: zip stm32f10x.zip (62.9 Кб, 0 просмотров)
Оценка
Новичок
 
Регистрация: 22.12.2016
Сообщений: 3
Репутация: 10
0 1
0 0
 
23.12.2016 11:11 #5
Да, после написания своего сообщения спросил у гугла (до этого у яндекса и заковыристо).

У меня такая сложность: хочу реализовать двусторонний UART на STM32 (с одной стороны берёт данные, на другую отправляет - прозрачный режим).
Нашел быстрый старт http://radiokot.ru/articles/43/
Но там в любом примере кроме первого (в самом низу файлы) Keil ругается на отсутствие STM32f10x_lib.h
Её подкрутил и уже из-за неё стал ругаться на STM32f10x_map.h. Ладно, версию 2008 года нашел. Потом еще ругался на два файла STM32f10x_type.h и cortex_m (точно не помню сейчас название), а при их добавлении появлялись ошибки №256 и др, связанные с TypeDef и др. (от 30 шт и выше).

В чем может быть проблема?

Спасибо!
Оценка
Специалист
 
Аватар для antonydublin
 
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
372 0
3 0
 
23.12.2016 15:07 #6
Цитата:
Сообщение от sect108
В чем может быть проблема?
sect108, компилируя старый проект в новой версии среды Keil, тем более добавляя хидеры (уже присутствующие под другими именами в собственных папках среды) из библиотек разных версий, Вы неизбежно натыкаетесь на проблему переопределения имён. В остальном - к сказанному во втором посте данной темы больше добавить нечего.

Так как Вы, видимо, только начинаете осваивать STM32, то рекомендую Вам обратиться вот к этому циклу статей http://easyelectronics.ru/arm-uchebn...e-proekta.html и не полениться собрать проект "с нуля", не пользуясь кем-либо заготовленными шаблонами. Скачать нужные библиотеки для ядра и периферии, подключить их к проекту и т.д.

Ваша задача не столь сложна, но всё же начните с простого: а) замигать светодиодом, б) замигать светодиодом по таймеру, в) прикрутить отправку по USART1 (светодиод мигает при отправке); г) отправка по USART очереди из буфера на прерываниях; д) то же самое с приёмом (второй светодиод тоже желательно зажигать); е) аналогично настроить и запустить USART2 и связать с USART1; ж) настроить DMA.

Отлаживать работу USART лучше всего при помощи терминала. Удобнее всего программа Terminal 1.9b. Также понадобится переходник USB -> UART, который не сложно собрать на какой-либо м/с FT232.
Оценка
Новичок
 
Регистрация: 22.12.2016
Сообщений: 3
Репутация: 10
0 1
0 0
 
24.12.2016 00:10 #7
Принял, спасибо.
Пробовал в Keil 4.7.

Вообще вчера много гайдов нашёл (пусть будут в переписке):
http://radiohlam.ru/teory/stm32_1.htm
http://easystm32.ru/stm32vl-discover...32vl-discovery
http://catethysis.ru/stm32_learning/

Здесь 5 страниц, посты в обратном порядке идут (первый самый внизу на 5 стр)
http://microtechnics.ru/category/mik...-nulya/page/5/
Оценка
Ответ
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 13:57.
Обратная связь РадиоЛоцман Вверх