matttsai 发表于 2018-4-30 20:34:30

HAL_I2C_MspInit()中,为何先call HAL_GPIO_Init()之后再enable I2C clock

由cube产生的HAL_MSP档案中, 为何先call HAL_GPIO_Init()之后再enable I2C clock
其他如SPI都是先enable clock之后再call HAL_GPIO_Init()

HAL_I2C_MspInit()
{
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__HAL_RCC_I2C1_CLK_ENABLE();
}

HAL_SPI_MspInit()
{
__HAL_RCC_SPI2_CLK_ENABLE();
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

toofree 发表于 2018-5-1 00:51:07

你可以给I2C SCL、SDA数据线上挂上示波器观察一下初始化过程, HAL_GPIO_Init()和enable I2C clock先后顺序,看看波形有什么不一样吗。
如果波形相同,都是一直保持1,那么先后顺序无所谓。
页: [1]
查看完整版本: HAL_I2C_MspInit()中,为何先call HAL_GPIO_Init()之后再enable I2C clock