/** * @brief I2Cx MSP Init. * @param hi2c: I2C handle * @retval None */ static void I2Cx_MspInit(I2C_HandleTypeDef *hi2c) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable the I2C peripheral */ DISCOVERY_I2Cx_CLOCK_ENABLE(); /* Enable SCK and SDA GPIO clocks */ DISCOVERY_I2Cx_GPIO_CLK_ENABLE(); /* I2Cx SD1 & SCK pin configuration */ GPIO_InitStructure.Pin = DISCOVERY_I2Cx_SDA_PIN | DISCOVERY_I2Cx_SCL_PIN; GPIO_InitStructure.Mode = GPIO_MODE_AF_OD; GPIO_InitStructure.Pull = GPIO_NOPULL; GPIO_InitStructure.Speed = GPIO_SPEED_FAST; GPIO_InitStructure.Alternate = DISCOVERY_I2Cx_AF; HAL_GPIO_Init(DISCOVERY_I2Cx_GPIO_PORT, &GPIO_InitStructure); /* Force the I2C peripheral clock reset */ DISCOVERY_I2Cx_FORCE_RESET(); /* Release the I2C peripheral clock reset */ DISCOVERY_I2Cx_RELEASE_RESET(); /* Enable and set I2Cx Interrupt to the highest priority */ HAL_NVIC_SetPriority(DISCOVERY_I2Cx_EV_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DISCOVERY_I2Cx_EV_IRQn); /* Enable and set I2Cx Interrupt to the highest priority */ HAL_NVIC_SetPriority(DISCOVERY_I2Cx_ER_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DISCOVERY_I2Cx_ER_IRQn); }
/** * @brief Discovery I2Cx MSP Initialization * @param hi2c I2C handle * @retval None */ static void I2Cx_MspInit(I2C_HandleTypeDef *hi2c) { (void) hi2c; GPIO_InitTypeDef GPIO_InitStructure; /* Enable SCK and SDA GPIO clocks */ DISCOVERY_I2Cx_GPIO_CLK_ENABLE(); /* I2Cx SD1 & SCK pin configuration */ GPIO_InitStructure.Pin = (DISCOVERY_I2Cx_SDA_PIN | DISCOVERY_I2Cx_SCL_PIN); GPIO_InitStructure.Mode = GPIO_MODE_AF_OD; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_HIGH; GPIO_InitStructure.Alternate = DISCOVERY_I2Cx_AF; HAL_GPIO_Init(DISCOVERY_I2Cx_GPIO_PORT, &GPIO_InitStructure); /* Enable the I2C clock */ DISCOVERY_I2Cx_CLK_ENABLE(); }