/*******************************************************************************
* Definitions
******************************************************************************/
#define BOARD_FTM_BASEADDR FTM2
#define BOARD_FIRST_FTM_CHANNEL 0U
#define BOARD_SECOND_FTM_CHANNEL 1U
/* Get source clock for FTM driver */
#define FTM_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)
#define FTM_READ_INPUT_CAPTURE BOARD_FTM_BASEADDR->CONTROLS[BOARD_FIRST_FTM_CHANNEL].CnV
/*******************************************************************************
* Prototypes
******************************************************************************/
/*******************************************************************************
* Variables
******************************************************************************/
/*******************************************************************************
* Code
******************************************************************************/
/*!
* @brief Main function
*/
int main(void)
{
ftm_config_t ftmInfo;
uint32_t status = 0;
/* Board pin, clock, debug console init */
BOARD_InitPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
/* Print a note to terminal */
PRINTF("\r\nFTM input capture example\r\n");
FTM_GetDefaultConfig(&ftmInfo);
/* Initialize FTM module */
FTM_Init(BOARD_FTM_BASEADDR, &ftmInfo);
PRINTF("FTM value: \r\n");
FTM_SetupInputCapture(BOARD_FTM_BASEADDR, BOARD_FIRST_FTM_CHANNEL, kFTM_RisingEdge, 0);
BOARD_FTM_BASEADDR->MOD = 0xFFFF;
FTM_StartTimer(BOARD_FTM_BASEADDR, kFTM_SystemClock);
while (1)
{
if (FTM_READ_INPUT_CAPTURE >= 20000) {
PRINTF("%d\r\n",FTM_READ_INPUT_CAPTURE);
}
status = FTM_GetStatusFlags(BOARD_FTM_BASEADDR);
if (status & kFTM_TimeOverflowFlag) {
FTM_ClearStatusFlags(BOARD_FTM_BASEADDR, status);
}
}
}