/** * @brief Initializes CEC low level. * @param None * @retval None */ void HDMI_CEC_IO_Init (void) { GPIO_InitTypeDef GPIO_InitStruct; /* Enable CEC clock */ __CEC_CLK_ENABLE(); /* Enable CEC LINE GPIO clock */ HDMI_CEC_LINE_CLK_ENABLE(); /* Configure CEC LINE GPIO as alternate function open drain */ GPIO_InitStruct.Pin = HDMI_CEC_LINE_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Alternate = HDMI_CEC_LINE_AF; HAL_GPIO_Init(HDMI_CEC_LINE_GPIO_PORT, &GPIO_InitStruct); /* CEC IRQ Channel configuration */ HAL_NVIC_SetPriority((IRQn_Type)HDMI_CEC_IRQn, 0xF, 0x0); HAL_NVIC_EnableIRQ((IRQn_Type)HDMI_CEC_IRQn); /* Enable CEC HPD SINK GPIO clock */ HDMI_CEC_HPD_SINK_CLK_ENABLE(); /* Configure CEC HPD SINK GPIO as output push pull */ GPIO_InitStruct.Pin = HDMI_CEC_HPD_SINK_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(HDMI_CEC_HPD_SINK_GPIO_PORT, &GPIO_InitStruct); I2C1_Init(); /* Enable CEC HPD SOURCE GPIO clock */ HDMI_CEC_HPD_SOURCE_CLK_ENABLE(); /* Configure CEC HPD SOURCE GPIO as output push pull */ GPIO_InitStruct.Pin = HDMI_CEC_HPD_SOURCE_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(HDMI_CEC_HPD_SOURCE_GPIO_PORT, &GPIO_InitStruct); I2C2_Init(); }
/** * @brief CEC MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * - Peripheral's GPIO Configuration * @param hcec: CEC handle pointer * @retval None */ void HAL_CEC_MspInit(CEC_HandleTypeDef *hcec) { GPIO_InitTypeDef GPIO_InitStruct; /* Enable CEC clock */ __CEC_CLK_ENABLE(); /* Enable GPIO clock and initialize GPIO */ HDMI_CEC_LINE_CLK_ENABLE(); GPIO_InitStruct.Pin = HDMI_CEC_LINE_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = HDMI_CEC_LINE_AF; HAL_GPIO_Init(HDMI_CEC_LINE_GPIO_PORT, &GPIO_InitStruct); /* Enable and set CEC Interrupt to the lowest priority */ HAL_NVIC_SetPriority(HDMI_CEC_IRQn, 0x0F, 0); HAL_NVIC_EnableIRQ(HDMI_CEC_IRQn); }