void hardware_init(void) { /* enable clock for PORTs */ CLOCK_SYS_EnablePortClock(PORTA_IDX); CLOCK_SYS_EnablePortClock(PORTC_IDX); CLOCK_SYS_EnablePortClock(PORTD_IDX); CLOCK_SYS_EnablePortClock(PORTE_IDX); /* Init board clock */ BOARD_ClockInit(); dbg_uart_init(); /*Set Flexio clock source*/ CLOCK_HAL_SetLircCmd(MCG, true); CLOCK_HAL_SetLircSelMode(MCG,kMcgliteLircSel2M); CLOCK_SYS_SetFlexioSrc(0U, kClockFlexioSrcMcgIrClk); configure_flexio_pins(0U,4U);/*if enable TX output to check IRDA encode data waveform--PTD4 */ configure_flexio_pins(0U,5U); /*if enable RX output to check IRDA decode waveform--PTD5 */ configure_flexio_pins(0U,6U); /*IRDA RX pin -- PTD6 */ configure_flexio_pins(0U,7U); /*IRDA TX pin -- PTD7 */ configure_cmp_pins(0U); /*CMP out as Flexio trigger source if enabled*/ }
/*FUNCTION****************************************************************************** * * Functon name : CLOCK_SYS_SetMcgliteMode * Description : Set MCG_Lite to some mode. * This function transitions the MCG_lite to some mode according to configuration * parameter. * *END***********************************************************************************/ mcglite_mode_error_t CLOCK_SYS_SetMcgliteMode(mcglite_config_t const *targetConfig) { uint32_t outFreq = 0U; mcglite_mode_error_t ret = kMcgliteModeErrNone; assert(targetConfig->mcglite_mode < kMcgliteModeStop); /* MCG_LITE mode change. */ switch (targetConfig->mcglite_mode) { case kMcgliteModeLirc8M: ret = CLOCK_HAL_SetLircMode(MCG, kMcgliteLircSel8M, targetConfig->fcrdiv, &outFreq); break; case kMcgliteModeLirc2M: ret = CLOCK_HAL_SetLircMode(MCG, kMcgliteLircSel2M, targetConfig->fcrdiv, &outFreq); break; case kMcgliteModeExt: ret = CLOCK_HAL_SetExtMode(MCG, &outFreq); break; default: ret = CLOCK_HAL_SetHircMode(MCG, &outFreq); break; } /* Set other registers. */ if (kMcgliteModeErrNone == ret) { /* Enable HIRC when MCG_LITE is not in HIRC mode. */ CLOCK_HAL_SetHircCmd(MCG, targetConfig->hircEnableInNotHircMode); /* Enable IRCLK. */ CLOCK_HAL_SetLircCmd(MCG, targetConfig->irclkEnable); CLOCK_HAL_SetLircStopCmd(MCG, targetConfig->irclkEnableInStop); /* Set IRCS. */ CLOCK_HAL_SetLircSelMode(MCG, targetConfig->ircs); /* Set LIRC_DIV2. */ CLOCK_HAL_SetLircDiv2(MCG, targetConfig->lircDiv2); } return ret; }