Beispiel #1
0
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;
}