А когда полез копаться в отладке, увидел такое (IDE Keil):

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