ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
271749
MegaJohn (13.09.2011 15:46, просмотров: 6594)
ой, чой та union чудит в IAR AVR. посмотрите плз. Меняю местами битовое поле с u16 и результат CRC меняется http://caxapa.ru/upload/files/a3da88d498e5b38d6d2c84f8f61751465716593a/
#pragma pack( push, 1 ) typedef struct { u8 ver; u8 sizeof_; u8 tmp; union { struct { u16 leds_en: 1; u16 extinp_en: 1; u16 shed_en: 2; u16 shed_act: 1; u16 extinp_act: 1; }modework_bits; u16 mode_work; }; u16 crc; }Sunion_1; typedef struct { u8 ver; u8 sizeof_; u8 tmp; union { u16 mode_work; struct { u16 leds_en: 1; u16 extinp_en: 1; u16 shed_en: 2; u16 shed_act: 1; u16 extinp_act: 1; }modework_bits; }; u16 crc; }Sunion_2; #pragma pack( pop ) __root static PGM Sunion_1 qwe1 = { 1, sizeof( Sunion_1 ), 2, 3, 0xABCD }; __root static PGM Sunion_2 qwe2 = { 1, sizeof( Sunion_2 ), 2, 3, 0xABCD }; Получаю разный CRC[>]