OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6245|回复: 4

STM32/F767管脚复用问题

[复制链接]

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-12-12
在线时间
4 小时
发表于 2017-6-8 22:49:30 | 显示全部楼层 |阅读模式
2金钱
使用的正点原子的STM32/F767,如下图,管脚PB8和PB9是复用的,我想使用其复用的I2C功能。


其管脚初始化如下,



#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}        //PB9输入模式
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9输出模式
//IO2ù×÷
#define IIC_SCL(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET)) //SCL,0/1表示高低
#define IIC_SDA(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET)) //SDA,0/1表示高低
#define READ_SDA    HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_9)  //读PB9引脚值


void IIC_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_GPIOB_CLK_ENABLE();   //使能GPIO时钟
    __HAL_RCC_I2C1_CLK_ENABLE();        //使能I2C时钟

    GPIO_Initure.Pin=GPIO_PIN_8|GPIO_PIN_9;
    GPIO_Initure.Mode=GPIO_MODE_AF_OD;  
    GPIO_Initure.Pull=GPIO_PULLUP;         
    GPIO_Initure.Speed=GPIO_SPEED_FAST;     
        GPIO_Initure.Alternate=GPIO_AF4_I2C1;        //复用为I2C
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);

    IIC_SDA(1);          //SDA=1
    IIC_SCL(1);  //SCL=1
}



我在使用板子默认的I2C管脚数据读取正常,使用复用管脚时读不出数据,请问什么原因?

QQ图片20170608224200.jpg

最佳答案

查看完整内容[请看2#楼]

大哥,我们的是软件模拟IIC,你整个硬件IIC的IO初始化配置,是什么意思?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-8 22:49:31 | 显示全部楼层
大哥,我们的是软件模拟IIC,你整个硬件IIC的IO初始化配置,是什么意思?
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-12-12
在线时间
4 小时
 楼主| 发表于 2017-6-9 10:32:02 | 显示全部楼层
正点原子 发表于 2017-6-8 22:49
大哥,我们的是软件模拟IIC,你整个硬件IIC的IO初始化配置,是什么意思?

软件模拟i2C岂不是任意两个IO口都可以用来作为i2c接口,那为啥还要整个复用?
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-12-12
在线时间
4 小时
 楼主| 发表于 2017-6-9 10:41:14 | 显示全部楼层
你能说详细点?
回复

使用道具 举报

1

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-5-10
在线时间
55 小时
发表于 2017-6-9 17:55:24 来自手机 | 显示全部楼层
要么纯软件模拟把这俩io当成普通io用(无视复用,之所以连在iic是方便软改硬),要么纯硬件iic,要初始化iic外设和管脚复用然后按照手册上的搞法弄,这四不像的肯定用不了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 08:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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