/* Return main A clock rate */ uint32_t Chip_Clock_GetMain_A_ClockRate(void) { uint32_t clkRate = 0; switch (Chip_Clock_GetMain_A_ClockSource()) { case SYSCON_MAIN_A_CLKSRC_FRO12MHZ: clkRate = SYSCON_FRO12MHZ_FREQ; break; case SYSCON_MAIN_A_CLKSRCA_CLKIN: clkRate = Chip_Clock_GetExtClockInRate(); break; case SYSCON_MAIN_A_CLKSRCA_WDTOSC: clkRate = Chip_Clock_GetWDTOSCRate(); break; case SYSCON_MAIN_A_CLKSRCA_FROHF: clkRate = Chip_Clock_GetFROHFRate(); break; default: clkRate = 0; break; } return clkRate; }
/** * @brief Application main function * @return Does not return */ int main(void) { /* Board Initialization */ SystemCoreClockUpdate(); Board_Init(); /* Clock enables and checks */ if (CLKOUT_SEL == SYSCON_CLKOUTSRC_RTC) { /* Turn on the RTC 32K Oscillator */ Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_32K_OSC); Chip_Clock_EnableRTCOsc(); } else if (CLKOUT_SEL == SYSCON_CLKOUTSRC_WDTOSC) { /* Enable the power to the WDT Oscillator */ Chip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_WDT_OSC); } else if (CLKOUT_SEL == SYSCON_CLKOUTSRC_CLKIN) { /* Setup CLKIN via IOCON (pin muxing) */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 22, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)); if (Chip_Clock_GetExtClockInRate() == 0) { /* Can't continue, stop! */ DEBUGSTR("CLKIN selected for CLKOUT, but CLKIN rate is 0\r\n"); while (1) {} } } /* Map P0.21 as CLKOUT pin */ Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 21, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)); /* There isn't too much to this example */ Chip_Clock_SetCLKOUTSource(CLKOUT_SEL, CLKOUT_DIV); return 0; }