Код компилируется не полностью

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Код компилируется не полностью

Сообщение TripleKill »

Всем привет. Пытаюсь подключить дисплей к STM32F407 по FSMC. Припаял, накопал библиотеку, скомпилировал. Дисплей не реагирует. Проверил все подключения и напряжения - все в норме.
А когда полез копаться в отладке, увидел такое (IDE Keil):
Изображение

По сути это значит, что код, не отмеченный темно-серым слева, не исполняется.
Взял инициализацию и перекопировал из файла библиотеки в main() - дисплей завелся! Вернул обратно - снова такая же петрушка.
В чем прикол? Я пробовал заменять HAL_Delay на самопальные задержки с __NOP();, но эффекта это не дало. Также как и изменение уровня оптимизации кода.

Добавлено after 7 hours 49 minutes 32 seconds:
Может, кому-то поможет.
Видимо, компилятор считает прямую запись по адресу просто ячейкой памяти, и т.к. далее отправленное число нигде не используется, вырезает все промежуточные обращения к такому адресу (адресам), оставляя только первые/последние.
В качестве костыля я создал переменную, в которую вначале попадает отправляемое значение, и только затем пишется по адресу FSMC. Теперь работает все.
Пока не знаю, как по-другому можно это обойти.
Реклама
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Код компилируется не полностью

Сообщение BlackKilkennyCat »

кусок кода в виде картинки ни о чём не говорит, ничего не посоветовать.
Реклама
Аватара пользователя
mickbell
Друг Кота
Сообщения: 16500
Зарегистрирован: Пт мар 30, 2012 05:17:29
Откуда: Екатеринбург

Re: Код компилируется не полностью

Сообщение mickbell »

[uquote="TripleKill",url="/forum/viewtopic.php?p=3916770#p3916770"]Пока не знаю, как по-другому можно это обойти.[/uquote]1. Сказать компилятору -o0. Это должно отключить оптимизацию, компилятор должен компилить as is, без выкрутасов.
2. Переменным, чьё имя здесь не используется и потому выгрызается при оптимизации, при объявлении приписать модификатор volatile, это должно запретить оптимизацию таких переменных.
Попробуйте то и другое.
И хрюкотали зелюки,
Как мюмзики в мове.

На каждый РКН
Найдётся VPN.
Ответить

Вернуться в «Практика»