Цитата:
Сообщение от Alex15BV
 И это только начало... Оно потянет за собой...
Не ту переменную ты взялся заменять 
Дело в том, что дефайн ничего не хранит - нет в памяти "reset USB hub after start", есть только воздух, 0 в коде прошивки. А ты переменные сохраняешь в структуру и ЕЕПРОМ. Конечно же он ругается.
А вот FlagRegister1 в моём примере - вот он физический. И при записи в ЕЕПРОМ он будет сохранять актуальные значения восьми флагов сразу...
И текущие состояния из него читаются например:
if (bitRead(PEREM1) == 0) then...
|
Про регистры ... это отдельная тема. Я раньше вообще делал так:
PHP код:
uint8_t PORTBregistr = 0; // Если у нас есть 8-битная переменная PORTBregistr, то мы можем присвоить её значение регистру PORTx, и тем самым установить ножки микроконтроллера в состояние, соответствующее значению переменной PORTBregistr
А потом сразу регистр в порт писал, командами ассемблера. Типа это быстрее, правильнее и вообще по феншую. А потом я решил сделать проект совместимым с СТМ32


. Думаю продолжать не надо.
Можно по этому же принципу паковать флаги состояний в 8 бит.
Но это надо перепахивать, отлаживать и тестировать код заново, и к тому же он станет еще труднее читаемый.
А по выходу мы будем иметь тот же самый блок питания, но с меньшим потреблением памяти. (На 100 байт?)
При этом больше килобайта свободно вот прямо сейчас.
Про дефайны.
Так в том то и дело, что дефайн тупо заменяет "ИМЯ_ПОСТОЯННОЙ" на присвоенное ему значение при компилировании. Но это же делает компилятор, когда видит
const .
А у меня почти все значения переменные, хотя бы потому, что настройки пользователя можно:
а - брать из прошивки
б - писать в ЕЕПРОМ
в - читать из ЕЕПРОМ
Компилятор поэтому и ругается, что конфликт с массивом идёт.
... Хотя ты в принципе это же и написал

...