Further update: the timer A prescaler is 1000 in the example code and should be 100 for 1ms interrupts, so that mystery solved at least!
I still need to find a way round the 'USBH_HID_get_report()' timeout issue in my original post though.
I still need to find a way round the 'USBH_HID_get_report()' timeout issue in my original post though.