
STM32F103ZE单片机I2C1重映射后不能工作,请问是怎么回事呢?不重映射就正常。
代码:GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENA...
代码:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* Configure I2C1 pins: SCL and SDA */
if(I2C1_AF_CN){ //如果允许开启重映射
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//开启复用时钟
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);//开启I2C1重映射
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
}
else GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure); 展开
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* Configure I2C1 pins: SCL and SDA */
if(I2C1_AF_CN){ //如果允许开启重映射
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//开启复用时钟
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);//开启I2C1重映射
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
}
else GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure); 展开
4个回答
展开全部
首先,你IC时钟没有开,其次,接收引脚要设置浮空输入模式,发送引脚,要设置推挽输出,这样便可以了,祝你好运!

2024-10-23 广告
深圳思驰科技是国内先进入芯片解密领域的公司,拥有数十年的丰富经验,成功帮助国内外企业、政府及知名科研机构攻克多个技术难题。在医疗电子、工控设备、军事航天、通信设备、广电设备、交通设备、汽车电子、家用电子等行业都成功推出了多款创新产品,熟悉这...
点击进入详情页
本回答由深圳思驰科技有限公司_提供
展开全部
你没有使能I2C1的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
而且要写在GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);这一句的前面
总结:重映射步骤:
//(1)使能被重新映射到的I/O端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟
//(2)使能被重新映射的外设时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
//(3)使能AFIO功能的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//4)进行重映射
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
//注:· (1)(2)(3)顺序可换
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
而且要写在GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);这一句的前面
总结:重映射步骤:
//(1)使能被重新映射到的I/O端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟
//(2)使能被重新映射的外设时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
//(3)使能AFIO功能的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//4)进行重映射
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
//注:· (1)(2)(3)顺序可换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也有这问题,重映射后整个工程文件都不能调试了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要帮你做设计吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |