/** * @brief Initializes the SDIO according to the specified * parameters in the SDIO_InitTypeDef and create the associated handle. * @param SDIOx: Pointer to SDIO register base * @param Init: SDIO initialization structure * @retval HAL status */ HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init) { uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_SDIO_ALL_INSTANCE(SDIOx)); assert_param(IS_SDIO_CLOCK_EDGE(Init.ClockEdge)); assert_param(IS_SDIO_CLOCK_BYPASS(Init.ClockBypass)); assert_param(IS_SDIO_CLOCK_POWER_SAVE(Init.ClockPowerSave)); assert_param(IS_SDIO_BUS_WIDE(Init.BusWide)); assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); assert_param(IS_SDIO_CLKDIV(Init.ClockDiv)); /* Set SDIO configuration parameters */ tmpreg |= (Init.ClockEdge |\ Init.ClockBypass |\ Init.ClockPowerSave |\ Init.BusWide |\ Init.HardwareFlowControl |\ Init.ClockDiv ); /* Write to SDIO CLKCR */ MODIFY_REG(SDIOx->CLKCR, CLKCR_CLEAR_MASK, tmpreg); return HAL_OK; }
/** * @brief Initializes the SDIO according to the specified * parameters in the SDIO_InitTypeDef and create the associated handle. * @param SDIOx: Pointer to SDIO register base * @param Init: SDIO initialization structure * @retval HAL status */ HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init) { __IO uint32_t tmpreg = 0; /* Check the parameters */ assert_param(IS_SDIO_ALL_INSTANCE(SDIOx)); assert_param(IS_SDIO_CLOCK_EDGE(Init.ClockEdge)); assert_param(IS_SDIO_CLOCK_BYPASS(Init.ClockBypass)); assert_param(IS_SDIO_CLOCK_POWER_SAVE(Init.ClockPowerSave)); assert_param(IS_SDIO_BUS_WIDE(Init.BusWide)); assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); assert_param(IS_SDIO_CLKDIV(Init.ClockDiv)); /* Get the SDIO CLKCR value */ tmpreg = SDIOx->CLKCR; /* Clear CLKDIV, PWRSAV, BYPASS, WIDBUS, NEGEDGE, HWFC_EN bits */ tmpreg &= CLKCR_CLEAR_MASK; /* Set SDIO configuration parameters */ tmpreg |= (Init.ClockEdge |\ Init.ClockBypass |\ Init.ClockPowerSave |\ Init.BusWide |\ Init.HardwareFlowControl |\ Init.ClockDiv ); /* Write to SDIO CLKCR */ SDIOx->CLKCR = tmpreg; return HAL_OK; }