Hardfault During Interrupt

Cortex-M MCUs have a main stack (MSP register) and a process stack (PSP register). The latter is used for tasks stack managed by FreeRTOS. The main stack is used by ISRs.
You create the USBDriver instance on the main stack and start FreeRTOS.
Hence the object living in the main stack might and likely will be corrupted as soon as an ISR runs.

Hence make the instances e.g. global or static as mentioned before to avoid their corruption.

Edit. This is also found multiple times in the forum and few instances here: