ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
220945
Dany (11.11.2010 09:38, просмотров: 3511)
C30 упаковка структуры. После упаковки структуры некорректное обращение к полю массив по индексу. Размер структуры до и после упаковки 22 байта. В данном случае проблема решится отказом от упаковки, но хочется выяснить причину.  typedef union // Тип состояние АКБ { struct __attribute__ ((packed)) { unsigned Low :1; // Низкий заряд unsigned Discharge :1; // Разряжен unsigned ChargeProcess:1; // Заряжается unsigned Bad :1; // Неисправен unsigned :4; }; BYTE Val; } tACC_STATUS; typedef struct /*__attribute__ ((packed))*/ // Структура параметров АКБ { BYTE NumSeg; // Кол-во сегментов для графического представления заряда tACC_STATUS Status; // Состояние АКБ float U; // Напряжение АКБ float t[ACC_NUM_BANK]; // Температура каждой банки АКБ } tACCUM_PARAM; Проблемный код: accCompare.U = acc.U = 5.; for(cntAcc = 0; cntAcc < ACC_NUM_BANK; cntAcc++) { acc.t[cntAcc] = cntAcc + 1; accCompare.t[cntAcc] = acc.t[cntAcc] + 1; }
image