С LPC не работал, но у STM-а в ихних примерах поголовно везде была тупая недоработка - они напрочь игнорили событие отключения девайса. Ну кроме разве что вывода на дисплей строки "device disconnected" - так, понты сплошные

.
Я добавил туда флажок, по которому сделал простую переинициализацию хоста. С тех пор вот уж полтора года всё крутится как часы и с мышами, и с клавами и с флэшками.
Но имейте в виду, что при переинициализации хоста необходимо также очищать абсолютно все служебные переменные как драйвера USB ядра, так и драйвера класса. Иначе можете словить кучу разных непредсказуемых глюков.
У ST с этим тоже были с этим проблемы. У меня, например, хост понимает флэшки, мышки и клавы. При чередовании этих устройств флэшка не выходила из фазы энумерации. Оказалось, я пропустил одну глоб переменную в драйвере MSC. Забыл её обнулить.
Там была тьма-тьмущая разных глобальных переменных, раскиданных по куче разных файлов... замахался, пока всё вылизал. Хотя, может, у NXP примеры почище сделаны, не знаю.
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда