野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19013|回复: 3

新手求助,关于硬件I2C1引脚重映射问题

[复制链接]
发表于 2017-3-18 14:08:20 | 显示全部楼层 |阅读模式
最近做一个项目,需要用到OLED,通信协议IIC,于是参考网上写了一个程序,用的是STM32F103VET硬件i2c1,默认管脚是SCL-PB6、SDA-PB7,用着没问题,但是项目中PB6、PB7有其他用处,于是查看STM32的用户手册,发现PB8、PB9的复用功能是I2C1,于是我想把I2C1的引脚复用到PB8、PB9,但是一直没有弄好,感觉是一个很简单的问题,就是打开复用时钟,进行引脚复用嘛,OLED却一直没有反应,很纠结,不知道什么原因,不使用引脚复用就是好好的,哪位大神能指教一下吗?

2J33LWX4BB5Z1SH(TNX%I%F.png
file:///D:\Documents\Tencent Files\1032230546\Image\C2C\S4V6]RSSHDIQ`SG5ONI9K6E.png


回复

使用道具 举报

 楼主| 发表于 2017-3-18 14:25:04 | 显示全部楼层
GPIO初始化这样写的,有什么问题吗?
static void I2C1_GPIO_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_I2C1,ENABLE);
        /*PB8-I2C1 SCL    PB9-I2C1  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);
       
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-18 14:25:44 | 显示全部楼层
哪个大神来指导一下啊,纠结了一天。
回复 支持 反对

使用道具 举报

发表于 2020-6-5 14:57:24 | 显示全部楼层
你试一下这个问题可能就解决了,至少我的解决了。

先把PB6设置为普通推挽输出,并且将PB6置高,再进行I2C1的初始化。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 10:28 , Processed in 0.032021 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表