сборка проекта для STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

Re: сборка проекта для STM32

Сообщение НовыйДень »

У вас гранаты не той сисьтемы :))) Долго же вы "саабражали" и пыхтели :) Лучше хорошенько почитайте учебник по Си, коль не умеете пользоваться приведением типов и указателями :))) Я понимаю, что хочется выкрутиться любой ценой, но зачем же сцать против ветра вместо того, чтобы просто прочитать, что void вообще-то имеет размерность 1 байт, и указатель на void* указывает на нечто размером 1 байт. Но суть тут не в этом! Там ошибка была в неверно установленной скобке при приведении типов и постинкременте, о чем и было указано в мессаге компилятора! Либо перенести одну скобку, либо убрать обе парные скобки. Хотя лишние скобки в разумных кол-вах ошибкой не считаются. А всё остальное - это уже частности общих реализаций. Конкретно к показанной выше проблеме отношения не имеют.

Изображение

PS. И запомните, ВладиславС, раз и навсегда: иная точка зрения не является "хамством", и незачем так истерично реагировать, и сами тоже не хамите!. Давайте нормально, конструктивно общаться. Я более 20 лет занимаюсь разработкой микроэлектроники, сотни реализованных прожэктов и уж стопудово знаю поболее ваших потуг разобраться в трех соснах :))) Договорились?
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

[uquote="НовыйДень",url="/forum/viewtopic.php?p=4213311#p4213311"]Лучше хорошенько почитайте учебник по Си[/uquote]Может просто в стандарт С заглянуть?
6.2.5 Types
СпойлерИзображение
vp2.png
(16.88 КБ) 235 скачиваний
6.5.6 Additive operators
СпойлерИзображение
vp1.png
(92.31 КБ) 229 скачиваний
Добавлено after 27 minutes 24 seconds:
А вот реакция разных компиляторов на это выражение
GCC
СпойлерИзображение
vp3.png
(9.34 КБ) 226 скачиваний
CLANG
СпойлерИзображение
vp4.png
(2.86 КБ) 215 скачиваний
IAR
СпойлерИзображение
Компиляторы в режиме С++ для более строгого контроля. Все они в один голос говорят, что это арифметика с указателем на void. А она согласно 6.5.6 стандарта С запрещена. Хотите находиться в зоне UB - ваше право, но другим такого советовать не надо.
Реклама
Tibman
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт июн 28, 2011 13:52:36

Re: сборка проекта для STM32

Сообщение Tibman »

Спасибо большое за правильные подсказки, помогло!

Добавлено after 1 hour 3 minutes 54 seconds:
Столкнулся с ошибками в заголовочном файле при объявлении структур. Проект был изначально сделан в Keil. Предполагается, что в нём он компилировался безошибочно.

На сайте keil.com приведён код подобной структуры:

Код: Выделить всё

typedef __packed struct
{
    char x;                   // all fields inherit the __packed qualifier
    int y;
} X;                          // 5 byte structure, natural alignment = 1
Однако в коде схожее решение вызывает следующие ошибки:

Код: Выделить всё

typedef __packed struct {                              (error: expected ';' before 'struct')
	u16 SensorType;
	float R0; // Начальное сопротивление для RTD
	float Inom; // Измерительный ток для RTD
	u16 Inom_INT; // Измерительный ток для RTD - код ЦАП
	u16 filterType; // Не используется
	u16 Reserved;
	__packed struct cal_struct                      (error: expected specifier-qualifier-list before '__packed')
	{
		float x0;
		float y0;
		float x1;
		float y1;
	} cal;
} SensorConfigRegStruct;
Тут ошибки из-за "продвинутости Keil", и без редактирования код не подходит для EmBitz?
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5737
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

Re: сборка проекта для STM32

Сообщение >TEHb< »

Tibman писал(а):(error: expected ';' before 'struct')
Ищите пропущенную точку с запятой строчкой выше.
"Привет!" - соврал он.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: сборка проекта для STM32

Сообщение VladislavS »

Tibman, __packed нестандартное ключевое слово, вот так правильно

Код: Выделить всё

struct __attribute__((__packed__)) SensorConfigRegStruct
{
   u16 SensorType;
   float R0; // Начальное сопротивление для RTD
   float Inom; // Измерительный ток для RTD
   u16 Inom_INT; // Измерительный ток для RTD - код ЦАП
   u16 filterType; // Не используется
   u16 Reserved;
   struct __attribute__((__packed__)) cal_struct
   {
      float x0;
      float y0;
      float x1;
      float y1;
   }  cal;
};
Реклама
Tibman
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вт июн 28, 2011 13:52:36

Re: сборка проекта для STM32

Сообщение Tibman »

Значит правильные были подозрения, что это код написан с учетом особенностей Keil.
Правка кода с использованием "__attribute__((__packed__))" прошла успешно, исправил во всех подобных структурах.
Огромное спасибо!

Благодаря помощи удалось решить проблемы со всеми заголовочными файлами, проект почти собран.
Судя по сообщениям компилятора, только в одном .c файле остались ошибки, который отвечает за обмен по i2c.

Добавлено after 1 hour 1 minute 32 seconds:
Решил исключить из проекта этот подозрительный файл i2c.c, вызывающий большое количество ошибок, т.к. не обнаружил к нему отсылок в файле Main.c, посчитав, что в случае необходимости компилятор выдаст сообщение об обсутствии необходимого файла.
Но результат вышел неожиданным.

Ошибка появилась по файлу stm32f4xx_conf.h, причем я посмотрел содержимое альтернативных файлов из сети с таким же названием, и там всё написано аналогично.
Но компилятор почему-то ругается именно на него.

Код: Выделить всё

void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0)          error: expected identifier or '(' before 'void' и error: expected ')' before numeric constant
#endif /* USE_FULL_ASSERT */

#endif /* __STM32F4xx_CONF_H */
Реклама
ass20
Держит паяльник хвостом
Сообщения: 915
Зарегистрирован: Пн июн 07, 2010 22:56:01
Откуда: SU

Re: сборка проекта для STM32

Сообщение ass20 »

[uquote="Tibman",url="/forum/viewtopic.php?p=4212811#p4212811"]Платными программами пользоваться нельзя, объём прошивки не маленький, поэтому поставил CooCox.[/uquote]

у кейла есть лицензия комьюнити, (не для коммерческого использования)
вот https://www2.keil.com/mdk5/editions/community
auric
Открыл глаза
Сообщения: 79
Зарегистрирован: Ср апр 17, 2019 12:04:23

Re: сборка проекта для STM32

Сообщение auric »

Скорее всего где-то имеется соответствующий дефайн типа

Код: Выделить всё

  #ifndef __packed
    #define __packed  __attribute__((packed))
но либо он не подтянулся, либо он предназначен для других условий и директив, не думаю, что кейл вот так просто знает про __packed.
Ответить

Вернуться в «ARM»