Fatal error pe035

Сообщения без ответов | Активные темы

Сообщения без ответов | Активные темы

ПРЯМО СЕЙЧАС:

Автор Сообщение

Не в сети

Заголовок сообщения: IAR. Непонятки с target

СообщениеДобавлено: Пт апр 13, 2018 20:11:27 

Встал на лапы

Карма: 2

Рейтинг сообщений: 4

Зарегистрирован: Пн дек 08, 2014 19:45:24
Сообщений: 117
Откуда: Воронеж

Рейтинг сообщения: 0

Попробовал написать (точнее, скопировать с интырнета) первую программку для стм32.
IAR (7.50.2) ругается:

Цитата:

Fatal Error[Pe035]: #error directive: «Please select first the target STM32F10x device used in your application (in stm32f10x.h file)» C:Program FilesIAR SystemsEmbedded Workbench 7.3arminccstm32f10x.h 96

Я весь IAR перерыл сверху донизу, чтоб настроить этот «target», но ничего не нашел. И не нашел и где можно вообще указать микроконтроллер.


_________________
Трудное детство, стальные игрушки.

Вернуться наверх
 

ПрофильПрофиль

 

Реклама

a5021

Не в сети

Заголовок сообщения: Re: IAR. Непонятки с target

СообщениеДобавлено: Пт апр 13, 2018 20:50:49 

Карма: 20

Рейтинг сообщений: 228

Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388

Рейтинг сообщения: 0

Там же ангийским языком написано: в фале stm32f10x.h близ 96 строки.

Вернуться наверх
Реклама

Myp3ik

Не в сети

Заголовок сообщения: Re: IAR. Непонятки с target

СообщениеДобавлено: Сб апр 14, 2018 12:59:22 

Мучитель микросхем
Аватар пользователя

Карма: 6

Рейтинг сообщений: 87

Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР

Рейтинг сообщения: 0

В настройках задефайни свой контроллер, или вручную

Код:

#define    STM32F10X_MD

… или какой там у вас….


_________________
Иван Сусанин — первый полупроводник :solder:

Вернуться наверх

dosikus

Не в сети

Заголовок сообщения: Re: IAR. Непонятки с target

СообщениеДобавлено: Пн апр 16, 2018 10:31:23 

Друг Кота
Аватар пользователя

Карма: 30

Рейтинг сообщений: 154

Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604

Рейтинг сообщения: 0

Я весь IAR перерыл сверху донизу, чтоб настроить этот «target», но ничего не нашел. И не нашел и где можно вообще указать микроконтроллер.

Вы что нибудь о создании проекта в IAR слышали? Или руководствуетесь опусами кухарок?

Изображение

Вернуться наверх
Реклама

Выгодные LED-драйверы для решения любых задач

КОМПЭЛ представляет со склада и под заказ широкий выбор LED-драйверов производства MEAN WELL, MOSO, Snappy, Inventronics, EagleRise. Линейки LED-драйверов этих компаний, выполненные по технологии Tunable White и имеющие возможность непосредственного встраивания в систему умного дома (димминг по шине KNX), перекрывают практически полный спектр применений: от простых световых указателей и декоративной подсветки до диммируемых по различным протоколам светильников внутреннего и наружного освещения.

Подобрать LED-драйвер>>

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

У меня при компиляции проекта, содержавшего смешанный код (ассемблер и C — это был проект с использованием библиотеки V-USB. Ассемблер был нужен для кода, критичного к времени выполнения), происходила следующая ошибка:

Error[e18]: Range error,  
PC offset out of range. Valid range is -4096 (-0x1000) to 4094 (0x0FFE). 
File: C:asmAVR910-protossusbdrvusbdrvasm.S, Line: 54  
Source:     rjmp    USB_INTR_VECTOR 

Where $ = __ATmega128__ + 0x4  [0x4] 
            in module «usbdrvasm» (c:asmAVR910-protossDebugObjusbdrvasm.r90), 
            offset 0x4 in segment part 0, segment INTVEC 
What: (usbCrc16 + 0x32) — ($ + 2) [0x1182] 
Allowed range: 0xFFFFF000 — 0xFFF 
Operand: usbCrc16Append [0x1188] 
           in module usbdrvasm (c:asmAVR910-protossDebugObjusbdrvasm.r90), 
           Offset 0x32 in segment part 1, segment CODE

Проблема была в том, что команда rjmp USB_INTR_VECTOR в таблице векторов прерываний не доставала до нужной её метки (адрес метки был слишком большой для перехода по rjmp).

Метода устранения ошибки два:

a) Заменить команду rjmp на команду jmp — у неё нет тех ограничений, по дальности перехода, как у rjmp, но выполняется jmp на 1 такт дольше. В моем случае это нежелательно — код критичен к времени выполнения прерывания.

b) Поместить код, который находится по метке USB_INTR_VECTOR, ближе к началу памяти, чтобы достала команда rjmp.

Второй способ можно реализовать, добавив перед кодом с меткой, куда прыгает rjmp, директиву назначения сегмента, который размещается линкером ближе к началу памяти, чем сегмент CODE. Порядок сегментов, которого линкер по умолчанию придерживается, следующий (подсмотрел в листинге *.map):

-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1)
-Z(CODE)TINY_F=_..X_FLASH_BASE-FF
-Z(CODE)NEAR_F=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)SWITCH=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)DIFUNCT=_..X_FLASH_BASE-_..X_FLASH_NEND
-Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)FAR_F=[_..X_FLASH_BASE-_..X_FLASH_END]/10000
-Z(CODE)INITTAB=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)HUGE_F=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)TINY_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)NEAR_ID=_..X_FLASH_BASE-_..X_FLASH_END
-Z(CODE)CHECKSUM#_..X_FLASH_END

Самый лучший кандидат на нужный сегмент для размещения кода по метке USB_INTR_VECTOR — сегмент NEAR_F. Ошибка пропала, когда я размести перед этим кодом директиву RSEG NEAR_F, вот так (метка USB_INTR_VECTOR как раз та, которая стоит в команде rjmp):

    RSEG    NEAR_F
USB_INTR_VECTOR:
;order of registers pushed: YL, SREG [sofError], YH, shift, x1, x2, x3, cnt push YL ;2 [35] push only what is necessary to sync with edge ASAP in YL, SREG ;1 [37] push YL ;2 [39] ..

Я сохранил прошивку STM в C:/, а в IAR я перехожу к параметрам -> Препроцессор -> выберите папку и выбираю C:STM32Cube_FW_F4_V1.27.0DriversCMSISInclude, и я получаю эту ошибку:

Fatal Error[Pe035]: #error directive: "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"  

< Сильный > main.c

#include "stm32f4xx.h"

int main()
{
  return 0;
}

Как мне решить эту ошибку?

2 ответа

Сообщение об ошибке в значительной степени говорит, что вы должны сделать: укажите целевое устройство STM32F4xx, прежде чем включать файл stm32f4xx.h. Я объясню, почему и как.

Почему: Как следует из названия, это общий заголовочный файл для всего семейства STM32F4. Однако устройства в этом семействе имеют (незначительные) различия, поэтому для каждого конкретного целевого устройства могут быть включены другие элементы. Это обрабатывается с помощью определения. Вы можете увидеть это в источник. В зависимости от определенной цели также включается соответствующий заголовочный файл для этой конкретной цели.

Как: Поскольку stm32f4discovery использует устройство STM32F407, вы должны определить STM32F407xx. (Если вы используете другой микроконтроллер, используйте другое определение. Доступные/поддерживаемые параметры см. в источнике.) Вы можете сделать это двумя разными способами.

Способ 1: определите макрос препроцессора перед оператором включения.

#define STM32F407xx
#include <stm32f4xx.h>

...

Способ 2 (рекомендуется): добавьте определение в настройки набора инструментов, чтобы параметр -DSTM32F407xx был добавлен в параметры компилятора.

Примечание. НЕ редактируйте файл stm32f4xx.h, так как это (обычно) общесистемный файл библиотеки. Он является общим для всех проектов, поэтому, если вы также захотите скомпилировать что-то для другого устройства STM32F4, у вас возникнут проблемы. Кроме того, при обновлении библиотеки вы потеряете свои изменения и вернется исходная ошибка.


2

wovano
26 Июн 2022 в 23:23

Как говорится в ошибке, «сначала выберите целевое устройство STM32F4xx, используемое в вашем приложении (в файле stm32f4xx.h)».

Откройте stm32f4xx.h, там вы найдете закомментированные имена различных микроконтроллеров. Раскомментируйте «#define STM32F469» (или что там у вас MCU), сохраните файл. Сделанный. Он подключит все файлы, характерные для вашего MCU.


-2

Ilya
21 Июн 2022 в 19:15

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Fatal error pci express
  • Fatal error pcap h no such file or directory
  • Fatal error ozzy batman arkham origins что делать
  • Fatal error out of memory вордпресс
  • Fatal error out of memory handler

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии