|
|
  |
Как правильно работать со стандартными библиотеками для STM32F, Как ее инициализировать, чтобы не выдавала ошибки |
|
|
|
Jun 6 2012, 23:24
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 10-10-08
Пользователь №: 40 829

|
Как правильно инициализировать стандартную библиотеку для STM32f чтобы не выдавал кучу ошибок о том, что происходит переопределение типов. В частности: Код Z:\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x.h(312): error: #256: invalid redeclaration of type name "s32" (declared at line 23 of "Z:\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_type.h") Z:\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x.h(348): error: #101: "RESET" has already been declared in the current scope Z:\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x.h(600): error: #256: invalid redeclaration of type name "DBGMCU_TypeDef" (declared at line 239 of "Z:\KeilARM\ARM\INC\ST\STM32F10x\stm32f10x_map.h") Компилятор Keil. Объявление о типе контроллера и использование стандартной библиотеки заданы.
|
|
|
|
|
Jun 7 2012, 01:08
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Очень многие примеры основаны еще на версии 2.х периферийной библиотеки ST. Вот я вижу stm32f10x_type.h - это оттуда. Как правило, 2.х имеет "главный" заголовок stm32f10x_lib.h, в то время как 3.х (3.5 - последняя) - stm32f10x.h. Следует вычистить исходники, заменив stm32f10x_lib.h на stm32f10x.h. Правда, это еще не гарантия, что все скомпилируется гладко: всплывут и другие из 2.х. Кроме того, в глобальных опциях проекта надо определить символ использования периферийной библиотеки и тип процессора:
USE_STDPERIPH_DRIVER, STM32F10X_HD
(STM32F10X_HD - это, например, STM32F103RC).
|
|
|
|
|
Jun 7 2012, 10:26
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518

|
Цитата(LEXIS @ Jun 7 2012, 03:24)  Как правильно инициализировать стандартную библиотеку для STM32f чтобы не выдавал кучу ошибок о том, что происходит переопределение типов. Компилятор Keil. Объявление о типе контроллера и использование стандартной библиотеки заданы. Эти ошибки возникают из-за неправильного файла stm32f10x_conf.h. По умолчанию Keil берет файл из своих запасов, а нужен файл из StdPeriph_Lib.
--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
|
|
|
|
|
Jun 7 2012, 12:34
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 10-10-08
Пользователь №: 40 829

|
Цитата Эти ошибки возникают из-за неправильного файла stm32f10x_conf.h. По умолчанию Keil берет файл из своих запасов, а нужен файл из StdPeriph_Lib. Это я уже понял, но как правильно его сконфигурировать? Пути до h файлов я прописал, исходникик библиотеки включил в сборку. А Keil все равно берет их из своих запасов. define`ы USE_STDPERIPH_DRIVER и STM32F10X_MD определены глобально для всего проекта.
|
|
|
|
|
Jun 7 2012, 19:51
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(LEXIS @ Jun 7 2012, 14:34)  Это я уже понял, но как правильно его сконфигурировать? Пути до h файлов я прописал, исходникик библиотеки включил в сборку. А Keil все равно берет их из своих запасов. Идея в том, чтобы скопировать файл _conf.h в каталог проекта, изменить его согласно требованиям, а пути прописать так, чтобы путь к "своему" _conf.h был "раньше", чем к библиотеке. Вообще говоря, не обязательно использовать _conf.h: у меня он полностью "вычищен", а соответствующие заголовки включаются по мере необходимости.
|
|
|
|
|
Jun 8 2012, 04:46
|

Знающий
   
Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819

|
Я недавно то же делал свой первый проект на STM32F1xxx. Правдо в IAR. Порылся в примерах и собрал библиотеку (во вложении, распаковывал прямо в проект). Компилируется без ошибок. А в настройках проекта в С/С++ Compiler -> Preprocessor , дописал $PROJ_DIR$\Libraries\CMSIS\Core\CM3 $PROJ_DIR$\Libraries\STM32F10x_StdPeriph_Driver\inc в проекте дописал #include "stm32f10x.h" #include "stm32f10x_it.h" в stm32f10x_conf.h закомментировал не нужную периферию, раскомментировал нужную. И всё.
Сообщение отредактировал KARLSON - Jun 8 2012, 04:47
Прикрепленные файлы
1.rar ( 236.22 килобайт )
Кол-во скачиваний: 29
--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
|
|
|
|
|
Jun 9 2012, 10:09
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764

|
Цитата(BlackOps @ Jun 8 2012, 09:49)  Хорошо бы самому все переписать, но для этого нужно знакомым быть со всем этим, ну или же если у кого есть чистые и быстрые библиотеки которыми бы он поделился то можно тогда то использовать. BlackOps, вот делюсь макросами для портов ВВ. Может подойдёт. На оригинальность не претендую, взял идею и исходники с ресурса ziblog.ru и слегка под себя поправил. (расширение файла заменить на *.h)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|