mse homjak (25.10.2024 17:48, просмотров: 20) ответил il-2 на +123456. Был у меня проект в Кейл для STM, там с помощью const был
зарезервирован сектор с настройками и значениями по умолчанию. Ну и
была настройка этих значений с помощью перезаписи сектора. Все
работало до поры до времени, но когда перешли на Кейл поновее, все
вдруг перестало работать. Именно как ты говоришь - часть констант в
определенных местах ушла в операнды, и пофиг им было на то, что в
секторе перезаписались новые значения. Излечилось это с помощью
volatile.
Я тут плакался, что у CH32V303 внешняя шина не умеет читать
нечотные 16р слова, но умеет читать 32р. Сделал функцию, в которую
передаётся адрес, она читает слово и в зависимости от
чётного-нечётного, возвращает 16р слово. Компилер подумал и
оптимизировал в обычное чтение 16р слов. Типа, "дебил, чо ты там
нахуевертил, смотри как надо". Пришлось переменную, которая
вычитывает из памяти, делать волатильной.