杰出人士
持之以恒
- 积分
- 12795
- 威望
- 8803
- 贡献
- 2386
- 兑换币
- 991
- 注册时间
- 2012-3-6
- 在线时间
- 803 小时
|
打算调一个IIC的温度传感器,把温度用液晶显示出来。结果一直不好使 一个大神说是IO口冲突了,需要把I2C1重映射到PB8、9上
于是我尝试着写了下面这段:
void GPIOiic_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
/* Configure I2C1 pins: SCL and SDA */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}
void I2C_Configuration(void)
{
I2C_InitTypeDef I2C_InitStructure;
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
/* I2C configuration */
// GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = I2C1_SLAVE_ADDRESS7;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
/* I2C Peripheral Enable */
I2C_Cmd(I2C1, ENABLE);
/* Apply I2C configuration after enabling it */
I2C_Init(I2C1, &I2C_InitStructure);
}
结果还是过不去,卡在事件5的while里……实在搞不懂求大侠指教! |
|