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