ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
271776 Топик полностью
koyodza (13.09.2011 16:43 - 16:52, просмотров: 203) ответил MegaJohn на ой, чой та union чудит в IAR AVR. посмотрите плз. Меняю местами битовое поле с u16 и результат CRC меняется
Семён Семёныч, это ж элементарно: поля юниона при инициализации структуры идут в разном порядке ты инициализируешь структуру таким набором: { 1, sizeof( Sunion_1 ), 2, 3, 0xABCD }; структуры одинаковые, кроме предпоследнего поля - юниона. В результате первые три поля инициализируются одинаково, а вот юнион инициализируется во втором случае как mode_work = 3, ну и далее нормально получается crc = 0xABCD, а вот в первом случае совсем иначе, а именно: leds_en = 3 и extinp_en = 0xABCD. Ну а на crc уже констант нехватает, и он инициализируется нулём. Поскольку leds_en и extinp_en - один бит, то там получается 1 и 1 соответственно, вот по адресу 87А6 мы и видим 03, т.е. две единицы