关于GPIO口复用设置问题。!

2019-07-20 21:44发布

比如说把 PA2 PA3 复用为串口2,教程上给的是这段代码:
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
               
        GPIO_Init(GPIOA, &GPIO_InitStructure);

这样设置感觉不太正确诶,因为两个IO口都设置成为了 输出,不是应该一个输入一个输出吗?
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF|GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
                GPIO_Init(GPIOA, &GPIO_InitStructure);



     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF|GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
               
        GPIO_Init(GPIOA, &GPIO_InitStructure);

上面这样设置对吗?
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF&GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
                GPIO_Init(GPIOA, &GPIO_InitStructure);



       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF&GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
               
        GPIO_Init(GPIOA, &GPIO_InitStructure);


这样呢???                    望大神给指点迷惑!!!              STM32F10都是分开设置的,感觉很合理。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
龙之谷
1楼-- · 2019-07-21 03:40
1.使用的是它的复用功能,配置为复用后无需过多关心输入输出
2.楼主自己的配置说明基础还有待加强
wufadeshou
2楼-- · 2019-07-21 05:51
 精彩回答 2  元偷偷看……
wufadeshou
3楼-- · 2019-07-21 06:41
龙之谷 发表于 2016-6-12 11:06
1.使用的是它的复用功能,配置为复用后无需过多关心输入输出
2.楼主自己的配置说明基础还有待加强

还望大神能够明示啊。。。
止天
4楼-- · 2019-07-21 12:05
STM32F10都是分开的  因为寄存器不一样

就算用库函数也不能完全不看寄存器
xkwy
5楼-- · 2019-07-21 15:06
wufadeshou 发表于 2016-6-12 11:07
还望大神能够明示啊。。。
GPIO_Mode_AF&GPIO_Mode_IN


这你是怎么想的?能随便与么,去看看它的定义
18019541212
6楼-- · 2019-07-21 20:42
教程是对的,还要加上
void GPIO_PinAFConfig(GPIOA, GPIO_PinSource2,GPIO_AF_I2C2)//这是f207的
void GPIO_PinAFConfig(GPIOA, GPIO_PinSource3,GPIO_AF_I2C2)

或者是这个  看看你有哪个库函数

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_I2C2, ENABLE);

一周热门 更多>