The problem may be the way that FTMx_SC is reset in the ISR. It differs between LC TPM and T3* FTM. On LC you actually have to write a 1 to reset it. so
*FTMx_SC = FTMx_SC_VALUE; probably won't work on LC, though it may not matter since TPM interrupts are not enabled. There may be other issues ...
another brief discussion of TPM vs FTM at
https://forum.pjrc.com/threads/4382...cies-Teensy-LC?p=142514&viewfull=1#post142514
EDIT: well, despite not changing the FTMx_SC logic, I could get the example sketch to work on LC (hack) by commenting out
//
while (*FTMx_MOD != DEFAULT_FTM_MOD);
in the ISR. ?? Well, i think it's working. It's not hanging, and LED on pin 3 is cycling through different periods and LED_BUILTIN is flashing. It looks the same as when i run the example on T3.2
EDIT 2: alas, using logic analyzer, PWM doesn't look right on the LC, frequency 5.86khz instead of 488 hz. no PWM during Snooze.sleep() on LC. Duty cycle is changing. The 5.86khz (12*488 ?) might suggest the LC clock didn't get reduced to 2mhz, or the PWM regs didn't get restored when returning to full speed ... further study required
EDIT 3: The LC TPM timer is clocked from PLL and not from F_BUS, and I think max bus speed is 1mhz for LC in VLPW (vs 2mhz for T3*), so DEFAULT_FTM_02_MOD should be 2048-1. Moving the clearIsrFlags() logic into disableDriver(), does properly reset the frequency to 488 hz and the while() doesn't hang, but still no output on pin 3 during Snooze.sleep().
FWIW, here is plot of LC current (ma) with PWM (300ms) and sleep/PWM (100ms, though no output on pin 3). Sampling current every 10 ms.
For T3.2, high's were around 40 ma