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条回答
DavidHan
1楼-- · 2019-07-21 12:13
 精彩回答 2  元偷偷看……
xuande
2楼-- · 2019-07-21 12:47
 精彩回答 2  元偷偷看……
DavidHan
3楼-- · 2019-07-21 17:59
xuande 发表于 2016-11-2 15:57
不论输出还是输入,只要不是模拟信号,
都可以加上拉或者下拉电阻,或者什么都不加。
你需要理解的是: ...

为什么串口的tx和rx都要配置成复用推挽输出呢,而实际的串口一个是tx一个是rx
xuande
4楼-- · 2019-07-21 20:29

rx是接收功能,输出电路自动被硬件关闭了。
前面已经说过。

xuande
5楼-- · 2019-07-21 21:19
DavidHan 发表于 2016-11-3 10:09
为什么串口的tx和rx都要配置成复用推挽输出呢,而实际的串口一个是tx一个是rx


rx是接收功能,输出电路自动被硬件关闭了。
前面已经说过。

这时,即使有配置为推挽的语句,也不起作用了。
当然,这些语句不应当出现,误导人。

DavidHan
6楼-- · 2019-07-22 01:37
本帖最后由 DavidHan 于 2016-11-3 11:55 编辑
xuande 发表于 2016-11-3 11:48
rx是接收功能,输出电路自动被硬件关闭了。
前面已经说过。

很感谢你的及时解答。

rx是接收功能,在GPIO的配置里有体现吗? 请用具体的代码指示一下,哪行代码可以说明 PA10的配置是输入功能。

一周热门 更多>