예제 #1
0
void Clock::init(Clock::Frequency freq) {
  XMC_SCU_CLOCK_CONFIG_t config;
  config.pclk_src = XMC_SCU_CLOCK_PCLKSRC_MCLK;
  config.rtc_src = XMC_SCU_CLOCK_RTCCLKSRC_DCO2;
  config.fdiv = 0;
  config.idiv = freq;
  XMC_SCU_CLOCK_Init(&config);
}
예제 #2
0
/**
* @brief  Function to initialize the Clock Tree based on UI configuration
* @note   -
* @param  None
* @retval None
*/
void SystemCoreClockSetup(void)
{
  /* Local data structure for initializing the clock functional block */
  const XMC_SCU_CLOCK_CONFIG_t CLOCK_XMC4_0_CONFIG =
  {
    .syspll_config.n_div = 80U,
    .syspll_config.p_div = 2U,

    .syspll_config.k_div = 4U,

    .syspll_config.mode = XMC_SCU_CLOCK_SYSPLL_MODE_NORMAL,
    .syspll_config.clksrc = XMC_SCU_CLOCK_SYSPLLCLKSRC_OSCHP,
    .enable_oschp = true,

    .enable_osculp = false, 

    .calibration_mode = XMC_SCU_CLOCK_FOFI_CALIBRATION_MODE_FACTORY,
    .fstdby_clksrc = XMC_SCU_HIB_STDBYCLKSRC_OSI,
    .fsys_clksrc = XMC_SCU_CLOCK_SYSCLKSRC_PLL,
    .fsys_clkdiv = 1U,
    .fcpu_clkdiv = 1U,
    .fccu_clkdiv = 1U,
    .fperipheral_clkdiv = 1U
  };
  /* Initialize the SCU clock */
  XMC_SCU_CLOCK_Init(&CLOCK_XMC4_0_CONFIG);
  /* RTC source clock */
  XMC_SCU_HIB_SetRtcClockSource(XMC_SCU_HIB_RTCCLKSRC_OSI);
  /* USB/SDMMC source clock */
  XMC_SCU_CLOCK_SetUsbClockSource(XMC_SCU_CLOCK_USBCLKSRC_USBPLL);
  /* USB/SDMMC divider setting */
  XMC_SCU_CLOCK_SetUsbClockDivider(4U);
  /* Start USB PLL */
  XMC_SCU_CLOCK_StartUsbPll(1U, 32U);
  /* WDT source clock */
  XMC_SCU_CLOCK_SetWdtClockSource(XMC_SCU_CLOCK_WDTCLKSRC_OFI);
  /* WDT divider setting */
  XMC_SCU_CLOCK_SetWdtClockDivider(1U);
  /* EBU divider setting */
  XMC_SCU_CLOCK_SetEbuClockDivider(1U);

}