Всем привет. Пытаюсь подключить дисплей к STM32F407 по FSMC. Припаял, накопал библиотеку, скомпилировал. Дисплей не реагирует. Проверил все подключения и напряжения - все в норме.
А когда полез копаться в отладке, увидел такое (IDE Keil):
По сути это значит, что код, не отмеченный темно-серым слева, не исполняется.
Взял инициализацию и перекопировал из файла библиотеки в main() - дисплей завелся! Вернул обратно - снова такая же петрушка.
В чем прикол? Я пробовал заменять HAL_Delay на самопальные задержки с __NOP();, но эффекта это не дало. Также как и изменение уровня оптимизации кода.
Добавлено after 7 hours 49 minutes 32 seconds:Может, кому-то поможет.
Видимо, компилятор считает прямую запись по адресу просто ячейкой памяти, и т.к. далее отправленное число нигде не используется, вырезает все промежуточные обращения к такому адресу (адресам), оставляя только первые/последние.
В качестве костыля я создал переменную, в которую вначале попадает отправляемое значение, и только затем пишется по адресу FSMC. Теперь работает все.
Пока не знаю, как по-другому можно это обойти.