tpm_config_t tpmInfo;
uint32_t helper;
helper = SIM->SCGC6; //enable TPM0 clock
helper |= 0x1000000;
SIM->SCGC6 = helper;
TPM_StopTimer(TPM0_PERIPHERAL);
TPM_GetDefaultConfig(&tpmInfo);
tpmInfo.useGlobalTimeBase = false;
tpmInfo.prescale = kTPM_Prescale_Divide_4;
tpmInfo.syncGlobalTimeBase = false;
tpmInfo.triggerSelect = kTPM_Trigger_Select_0;
tpmInfo.triggerSource = kTPM_TriggerSource_External;
tpmInfo.extTriggerPolarity = kTPM_ExtTrigger_Active_High;
tpmInfo.chnlPolarity = 0U;
TPM_Init(TPM0_PERIPHERAL, &tpmInfo);
/* Setup input capture on a TPM channel */
TPM_SetupInputCapture(TPM0_PERIPHERAL, kTPM_Chnl_2, kTPM_RiseAndFallEdge);
/* Set the timer to be in free-running mode */
TPM_SetTimerPeriod(TPM0_PERIPHERAL, TPM_MAX_COUNTER_VALUE(TPM0_PERIPHERAL));
/* Enable channel interrupt */
TPM_EnableInterrupts(TPM0_PERIPHERAL, kTPM_Chnl2InterruptEnable | kTPM_TimeOverflowInterruptEnable);
/* Enable at the NVIC */
EnableIRQ(TPM0_IRQn);
TPM_StartTimer(TPM0_PERIPHERAL, kTPM_SystemClock);
******************************************