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

 
 
> Описание структуры в IAR for ARM, проблема в получении нужного результата
Василий Зыков
сообщение Apr 25 2017, 12:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 11-11-06
Из: Екатеринбург
Пользователь №: 22 191



Добрый день, коллеги!

Работаю в среде IAR for ARM 7.5 - программа под микроконтроллер STM32F103
На этот раз я столкнулся с такой проблемой: есть описание некоторой структуры

Код
typedef __packed struct {
    unsigned int Type:4;              // код типа операции
    unsigned int Pause:1;            // разрешение паузы до выполнения шага
    unsigned int DrainGate1:1;    // разрешение клапана  1
    unsigned int DrainGate2:1;    // разрешение клапана 2
    unsigned int ReservedBits:9;  // зарезервированные биты
    unsigned int DrumSpeed;      // скорость вращения
    unsigned char Time;             // время вращения
    unsigned char Reserved[11];  // зарезервированные байты
} WPC_SPIN_t;


я ожидаю получить размер структуры 16 байт и следующее размещение данных:

Код
xx xx sl sh
tt xx xx xx
xx xx xx xx
xx xx xx xx


где xx - просто байт
sl - младший байт скорости
sh - старший байт скорости
tt - время вращения

На деле же я получаю размер структуры 18 байт и размещение байт, как показано ниже:
Код
xx xx sl sh
00 xx tt xx
xx xx xx xx
xx xx xx xx


т.е. байт с временем перемещается на две позиции... а вместо него пишутся нули

склыдывается ощущение, что параметр DrumSpeed стал 4-байтовым, потому что при его изменении в последующие два байта пишутся нули.

Как мне заставить компилятор правильно размещать данные?

Сообщение отредактировал Василий Зыков - Apr 25 2017, 12:55
Go to the top of the page
 
+Quote Post



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

 


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


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