Оптимизировал как мог, в итоге получилось почти оптимальное быстродействие GUI.

Отрисовка экрана библиотекой занимает около 4.4мс, вывод кадра на LCD - 17.5мс, обработка USB и преобразование в матрицу кнопок - около 8.4мкс. Если было бы больше памяти, не пришлось бы мудрить со сжатием картинки и заодно отправка данных на LCD сократилась бы до старта DMA - но для этого нужен другой "камень", от 140Кб памяти (из них 120 - под экран только).
В итоге заметно, что процессор почти всё время простаивает и можно загрузить прочей работой
Разумеется, приличную часть времени будет занимать цикл реакции на входные сигналы от матрицы, что пока что не реализовано. Но всё равно запас по быстродействию приличный.