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

PS. И запомните, ВладиславС, раз и навсегда: иная точка зрения не является "хамством", и незачем так истерично реагировать, и сами тоже не хамите!. Давайте нормально, конструктивно общаться. Я более 20 лет занимаюсь разработкой микроэлектроники, сотни реализованных прожэктов и уж стопудово знаю поболее ваших потуг разобраться в трех соснах
Договорились?
PS. И запомните, ВладиславС, раз и навсегда: иная точка зрения не является "хамством", и незачем так истерично реагировать, и сами тоже не хамите!. Давайте нормально, конструктивно общаться. Я более 20 лет занимаюсь разработкой микроэлектроники, сотни реализованных прожэктов и уж стопудово знаю поболее ваших потуг разобраться в трех соснах
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
[uquote="НовыйДень",url="/forum/viewtopic.php?p=4213311#p4213311"]Лучше хорошенько почитайте учебник по Си[/uquote]Может просто в стандарт С заглянуть?
6.2.5 Types
6.5.6 Additive operators
Добавлено after 27 minutes 24 seconds:
А вот реакция разных компиляторов на это выражение
GCC
CLANG
IAR
Компиляторы в режиме С++ для более строгого контроля. Все они в один голос говорят, что это арифметика с указателем на void. А она согласно 6.5.6 стандарта С запрещена. Хотите находиться в зоне UB - ваше право, но другим такого советовать не надо.
6.2.5 Types
Спойлер
Спойлер
А вот реакция разных компиляторов на это выражение
GCC
Спойлер
Спойлер
Спойлер
Re: сборка проекта для STM32
Спасибо большое за правильные подсказки, помогло!
Добавлено after 1 hour 3 minutes 54 seconds:
Столкнулся с ошибками в заголовочном файле при объявлении структур. Проект был изначально сделан в Keil. Предполагается, что в нём он компилировался безошибочно.
На сайте keil.com приведён код подобной структуры:
Однако в коде схожее решение вызывает следующие ошибки:
Тут ошибки из-за "продвинутости Keil", и без редактирования код не подходит для EmBitz?
Добавлено 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;
- >TEHb<
- Друг Кота
- Сообщения: 5737
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: сборка проекта для STM32
Ищите пропущенную точку с запятой строчкой выше.Tibman писал(а):(error: expected ';' before 'struct')
"Привет!" - соврал он.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: сборка проекта для STM32
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;
};- Реклама
Re: сборка проекта для STM32
Значит правильные были подозрения, что это код написан с учетом особенностей Keil.
Правка кода с использованием "__attribute__((__packed__))" прошла успешно, исправил во всех подобных структурах.
Огромное спасибо!
Благодаря помощи удалось решить проблемы со всеми заголовочными файлами, проект почти собран.
Судя по сообщениям компилятора, только в одном .c файле остались ошибки, который отвечает за обмен по i2c.
Добавлено after 1 hour 1 minute 32 seconds:
Решил исключить из проекта этот подозрительный файл i2c.c, вызывающий большое количество ошибок, т.к. не обнаружил к нему отсылок в файле Main.c, посчитав, что в случае необходимости компилятор выдаст сообщение об обсутствии необходимого файла.
Но результат вышел неожиданным.
Ошибка появилась по файлу stm32f4xx_conf.h, причем я посмотрел содержимое альтернативных файлов из сети с таким же названием, и там всё написано аналогично.
Но компилятор почему-то ругается именно на него.
Правка кода с использованием "__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 */
Re: сборка проекта для STM32
[uquote="Tibman",url="/forum/viewtopic.php?p=4212811#p4212811"]Платными программами пользоваться нельзя, объём прошивки не маленький, поэтому поставил CooCox.[/uquote]
у кейла есть лицензия комьюнити, (не для коммерческого использования)
вот https://www2.keil.com/mdk5/editions/community
у кейла есть лицензия комьюнити, (не для коммерческого использования)
вот https://www2.keil.com/mdk5/editions/community
Re: сборка проекта для STM32
Скорее всего где-то имеется соответствующий дефайн типа
но либо он не подтянулся, либо он предназначен для других условий и директив, не думаю, что кейл вот так просто знает про __packed.
Код: Выделить всё
#ifndef __packed
#define __packed __attribute__((packed))

