STM32串口在程序中配置时PA9,USART-TX和PA10,USART-RX为什么工作模式配置成复用推挽输出和浮空输入??

如题所述

usart串口,首先tx是作为输出的,逻辑上输出的数据都是0或者1,也就是由高低电平来表示,推挽就是能稳定输出1或者0。而复用,是因为这个io受的是内部的的usart模块来控制,并非是gpio寄存器来控制。至于rx设置为浮空输入那就很好理解了,首先接收的肯定是要设置为输入,才能检测外界的电平,其次,浮空就能收到高和低的电平,也才能分析出0和1.
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-02
关于STM32的USART配置,需要完成以下几个步骤
1,打开USART时钟
2,配置PA9及PA10
由于USART属于可选功能项
所以TX要设置成GPIO_Mode_AF_PP;,即复用推挽输出
RX用于数据输入,被设置成浮空输入
这是由于STM32的IO口引脚总共只有以下几种模式
GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
对于特殊功能模式,只有一个复用开漏及复用推挽。
这两种都是用于输出的情况。
所以RX只能被设置成浮空输入
这不仅是USART,对于其他的如SPI也是如此。
第2个回答  2012-11-08
这个,因为串口的两根数据线TX是用来发送数据,RX是用来接收数据的.然后复用是因为使用了GPIO的复用功能,然后推挽输出是为了增强IO口的输出能力.追问

这个配置是固定的吗?

追答

这个应该是固定的吧,也没有必要去纠结是否固定,毕竟只是初始化而已,只要设定成这样能使用USART模块就OK啦,不过我是很少用固件库函数,直接写寄存器跟固件库还是有些区别的,因为这个一个GPIO_Init();函数要设定很多个寄存器.

追问

嗯嗯,你都用寄存器啊??能加你QQ吗??我刚开始学啦!用库函数啦!不会的请教请教下你啦

追答

244259402,我也是在学习而已,不过互相探讨一下还是可以的

本回答被提问者采纳
相似回答