STMF407探索者历程代码中的一些疑惑

2019-07-20 19:03发布

问题1 GPIO的配置,从M3迁移到M4对GPIO的配置特别不习惯,而且有些不易理解(在QQ里加了一些相关的群也没人能说清楚)。首先就是这个复用功能的配置:
复用功能配置 复用功能配置

复用功能配置对 I/O 端口进行编程作为复用功能时:●      可将输出缓冲器配置为开漏或推挽●      输出缓冲器由来自外设的信号驱动(发送器使能和数据)●      施密特触发器输入被打开●      根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻●      输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样●      对输入数据寄存器的读访问可获取 I/O 状态
文档里的说明如上。
再看历程,先拿简单的串口举例,串口的复用配置如下:        //USART1端口配置        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHz        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉        GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10
        //串口1对应引脚复用映射        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1
问题是:如果对于串口的TX脚,配置成了复用推完输出,配置上拉下拉还有意义吗?不过这个可以勉强接受,最多就是忽略上拉的作用。(图22的下面部分)如果是RX脚(此时可以有上拉下拉),配置成推挽输出,这个就很不好理解了。推挽输出就有个高低状体,无论是那个状态都会对输入产生影响,希望高人指点一二;
还有定时器的输入捕获实验类似:        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉        GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); //PA0复用位定时器5
配置成推挽输出,无论输出状态是高是低,都会对输入产生影响吧。不知道是我哪里理解有问题,请大神们教育。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
xuande
1楼-- · 2019-07-20 22:22
 精彩回答 2  元偷偷看……
xuande
2楼-- · 2019-07-20 23:37

问题描述和版面很舒服,语言基本通顺,意思清晰,错别字少。
这样的提问必答,包教包会!


xuande
3楼-- · 2019-07-20 23:50
 精彩回答 2  元偷偷看……
xuande
4楼-- · 2019-07-21 03:48

RX脚是输入端,而推挽电路是输出,
图22中间、下方的“输出控制”电路会自行把两个MOS都关闭。

这是文字说明方面的问题,可能手册没有提到,也可能读者没注意到。

xuande
5楼-- · 2019-07-21 06:16

不论是AF功能还是普通IO,
只要端口做输入,下面的输出电路都会关闭。

DavidHan
6楼-- · 2019-07-21 11:18
xuande 发表于 2016-11-2 10:52
不论是AF功能还是普通IO,
只要端口做输入,下面的输出电路都会关闭。

首先,非常感谢你的精彩回答。

但是有些复用既有输出的功能也有输入的功能。比如串口的两个复用,一个是输出类型(tx),一个是输入类型(rx),代码里一并将他们配置为 GPIO_OType_PP;而在f103的TX是配置成复用推挽输出,RX配置成浮空输入的。不知道F4的TX和RX一并配置为GPIO_OType_PP, GPIO_PuPd_UP如何理解

一周热门 更多>