ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1172825
mse homjak (10.02.2022 17:42, просмотров: 6314)
Гуры каллиграфии на Ц. Есть концэптуальный вопрос: 

Есть такое решение:

typedef union R1container
{
   unsigned long data;
   struct
   {
     unsigned int select:3;
     unsigned int module:12;
     unsigned int phase:12;
     unsigned int prescaler:1;
     unsigned int phaseAdj:1;
     unsigned int :3;
   }bits;
}R1container;
...
const R1container _R1initMask_={.bits.module=0,.bits.phase=1,.bits.phaseAdj=0,.bits.prescaler=0,.bits.select=1};
...
R1datareg.data=_R1initMask_.data;
...
R1datareg.bits.module=syntesatorModule;

Итыды. Всё норм, но компилер создаёт в ОЗУ переменную ридонли _R1initMask_. А мне уже приходится экономить память. Можно эту константу расположить во флэши, но доступ становится горбатым. Как вариант годится, но коряво. Есть ли вариант загружать R1datareg.data как загружалось бы, описав битовые поля через #define?