реклама на сайте
подробности

 
 
> Выравнивание полей в структурах IAR STM32?
Rash
сообщение Sep 7 2013, 11:32
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Приветствую.
Переношу проект с 8-bit (AVR) на 32-bit (STM32F4xx) и столкнулся с проблемой выровненных данных. Дело в том что обмен по SPI 8 битный. Полученные данные по SPI вычитываются в массив через DMA и накладываются на структуру с не выровненными данными (8бит, 16 бит, битовые поля). В результате не правильный результат. Пока обошёл это дело через pragma pack.

Код
#pragma pack(push, 1)
typedef struct name
{

} name_t
#pragma pack(pop)


Всё работает, но не очень нравиться такая запись, дабы не напороться в дальнейшем на грабли, т.к оформляется всё виде драйвера на устройство и больше туда что б не лезть. Перебирать индексы массива не хочется, теряется наглядность. Есть ли какие ещё варианты записи структуры структуру с не выровненными данными, что бы наложить на массив данных?

Используется IAR6.5, в дальнейшим поддержка проекта будет только в IARе, потому вопрос совместимости с другими компиляторами особо не важен.
Железо будет только Cortex M4 или M3, про ограничения на других АРМах не актуально.

ЗЫ: Заметил ещё неприятную особенность записи pragma pack, как только делаешь сохранения в том файле, где записано pragma pack, то после перепрошивки перестают работать внешние прерывания. Если потом сделать сохранить в другом файле и зашить снова, то всё работает. С чем связано не понятно.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 01:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01278 секунд с 7
ELECTRONIX ©2004-2016