关于ch32v003芯片使用i2c时,请问切换i2c的引脚,

void IIC_Init(u32 bound, u16 address)

{

    GPIO_InitTypeDef GPIO_InitStructure = {0};

    I2C_InitTypeDef I2C_InitTSturcture = {0};


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOD, &GPIO_InitStructure);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOD, &GPIO_InitStructure);


    I2C_InitTSturcture.I2C_ClockSpeed = bound;

    I2C_InitTSturcture.I2C_Mode = I2C_Mode_I2C;

    I2C_InitTSturcture.I2C_DutyCycle = I2C_DutyCycle_16_9;

    I2C_InitTSturcture.I2C_OwnAddress1 = address;

    I2C_InitTSturcture.I2C_Ack = I2C_Ack_Enable;

    I2C_InitTSturcture.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

    I2C_Init(I2C1, &I2C_InitTSturcture);


    I2C_Cmd(I2C1, ENABLE);

}

在上面程序中,我将C口的引脚改成了D,但是在测试中发现没有效果,请问如何初始化其他引脚用于iic上使用?

您好,因为PD0、PD1是重映射引脚,需要调用GPIO_PinRemapConfig函数进行引脚复用,具体可参考下图

image.png


只有登录才能回复,可以选择微信账号登录