/* Initializes the slice with the generated configuration */ GLOBAL_CCU4_STATUS_t GLOBAL_CCU4_Init(GLOBAL_CCU4_t* handle) { XMC_ASSERT("GLOBAL_CCU4_Init:NULL handler", (NULL != handle)); if (false == handle->is_initialized) { /* Enable CCU4 module */ XMC_CCU4_Init(handle->module_ptr,handle->mcs_action); /* Start the prescaler */ XMC_CCU4_StartPrescaler(handle->module_ptr); /* Restricts multiple initializations */ handle->is_initialized = true; } return (GLOBAL_CCU4_STATUS_SUCCESS); }
/* API to initialize CCU4 global resources */ void XMC_CCU4_Init(XMC_CCU4_MODULE_t *const module, const XMC_CCU4_SLICE_MCMS_ACTION_t mcs_action) { uint32_t gctrl; XMC_ASSERT("XMC_CCU4_Init:Invalid module pointer", XMC_CCU4_IsValidModule(module)); XMC_ASSERT("XMC_CCU4_Init:Invalid mcs action", XMC_CCU4_SLICE_CHECK_MCS_ACTION(mcs_action)); /* Enable CCU4 module */ XMC_CCU4_EnableModule(module); /* Start the prescaler */ XMC_CCU4_StartPrescaler(module); gctrl = module->GCTRL; gctrl &= ~((uint32_t) CCU4_GCTRL_MSDE_Msk); gctrl |= ((uint32_t) mcs_action) << CCU4_GCTRL_MSDE_Pos; module->GCTRL = gctrl; }