In order to enable the USB clock and get my code to run, I needed to add this line:
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcIrc48M, 48000000U);
Otherwise, my code basically just came from the VCOM demo that is included with MCUXpresso. I modified the task to handle my console commands via LPUART0 and USBVCOM through the same command processor and it basically worked as is. The UBS works on complicated call back functions and I tweaked the ISR as follows:
void USB0_IRQHandler(void)
{
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
USB_DeviceKhciIsrFunction(s_cdcVcom.deviceHandle);
if ((1 == s_cdcVcom.attach) && (1 == s_cdcVcom.startTransactions))
{
if ((0 != s_recvSize) && (0xFFFFFFFF != s_recvSize))
{
uint8_t data = s_currRecvBuf[0];
s_recvSize = 0;
if (ConsoleProcess(data)) // Process one Byte and look for '/r' aka RETURN
{
// User pressed RETURN
vTaskNotifyGiveFromISR(USBVCOM_TaskToNotify, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
}
}
/* Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlapping
exception return operation might vector to incorrect interrupt */
#if defined __CORTEX_M && (__CORTEX_M == 4U)
__DSB();
#endif
}