Новичок
Регистрация: 06.04.2016
Сообщений: 4
Репутация: 10
|
Добрый день!
При компиляции проекта 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;" Подскажите, в чем дело? |
||
Оценка
|
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
|
Возникновение ошибки 256 возможно по ряду причин. Исходя из того, что все нужные файлы добавлены в проект, вот стандартные подходы к разрешению проблемы:
-убедиться, что в проекте нет смешанных версий используемых библиотек (в разных версиях конкретной библиотеки файлы .c и .h могут иметь разную структуру и имена); как следствие убедиться, что Keil работает с файлами только из нужных папок (проверить пути в настройках проекта), иначе возможная ситуация, когда часть фалов будет обрабатываться из собственных папок Keil'a (по умолчанию), а часть браться из проекта. Как раз тут несовпадение версий библиотек может вызвать казус вроде переопределения имени, хотя на самом деле в более новой версии его перенесли в другой файл и т.п. -проверить цепочку #include'ов с тем, чтобы отыскать возможное дублирование (в данном случае ADC_TypeDef определён исходно в stm32f10x_map.h); -как следствие проверить, не определяется ли один и тот же проблемный тип дважды в каком-либо файле. |
||
Оценка
|
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
|
Вот первая ссылка из 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. |
||
Оценка
|
Новичок
Регистрация: 22.12.2016
Сообщений: 3
Репутация: 10
|
Да, после написания своего сообщения спросил у гугла (до этого у яндекса и заковыристо).
У меня такая сложность: хочу реализовать двусторонний UART на STM32 (с одной стороны берёт данные, на другую отправляет - прозрачный режим). Нашел быстрый старт http://radiokot.ru/articles/43/ Но там в любом примере кроме первого (в самом низу файлы) Keil ругается на отсутствие STM32f10x_lib.h Её подкрутил и уже из-за неё стал ругаться на STM32f10x_map.h. Ладно, версию 2008 года нашел. Потом еще ругался на два файла STM32f10x_type.h и cortex_m (точно не помню сейчас название), а при их добавлении появлялись ошибки №256 и др, связанные с TypeDef и др. (от 30 шт и выше). В чем может быть проблема? Спасибо! |
||
Оценка
|
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 873
Репутация: 381
|
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
|
Принял, спасибо.
Пробовал в 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/ |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |