Накидал пример
TestMenu.zip с тремя уровнями меню. Вся логика в программе на ST, которая назначена в задачу экрана. Код не оптимизирован, цель просто показать один из способов реализации. Для меню с малым количеством пунктов и подменю такой способ подойдет, для более сложного можно написать свой компонент.