STM32F407单片机UART串口gpio口复用功能配置问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F407单片机UART串口gpio口复用功能配置问题相关的知识,希望对你有一定的参考价值。
GPIOA->AFR[1] &=~(0XFF<<4);
GPIOA->AFR[1] |= 0X77<<4;
这段代码里面AFR[1]代表AFRH吗,参考手册上只看到有AFRL和AFRH之分,为什么不可以直接写出GPIOA->AFRH
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也是如此。 参考技术A 您好
要实现uart
转rs485功能。用的是ti
6lb184
485芯片,re/de脚是是控制t/r方向,一般是连在一起。请问是用mcu的通用gpio控制,还是用mcu
uart上的管脚rts控制?
如果是前者,还需要改uart程序?
可以选择任意可用io口,实际应用中,可以用tx脚控制
11. ESP32 Micropython编程(Thonny)UART串口通讯
uart串口通讯
一、串口硬件
ESP32-WROOM-32 有(0,1,2)三个串口端
- UART0: GPIO3(RXD)和GPIO1(TXD) 用于下载调试串口,引脚不可改变
- UART1: GPIO9(RXD)和GPIO10(TXD) 外接flash,使用时候请设置其他引脚连接
- UART2: GPIO16(RXD)和GPIO17(TXD) 可以直接使用
使用时候将 UART2 通过USB转TTL芯片 接到计算机
二、基本程序
在shell终端输入依次输入以下代码
>>> import machine
>>> uart = machine.UART(2,115200)
>>> uart
UART(2, baudrate=115201, bits=8, parity=None, stop=1, tx=17, rx=16, rts=-1, cts=-1, txbuf=256, rxbuf=256, timeout=0, timeout_char=1)
UART(串口号,波特率,8位数据,无奇偶校验,1位停止位,TXD引脚号,RXD引脚号,不使用rts和cts,发送和接收缓存区大小, , ,)
三、计算机控制板载led灯
在主编辑器中输入以下代码,并运行此脚本
import machine
led = machine.Pin(2, machine.Pin.OUT)
uart = machine.UART(2, 115200)
strmsg = ''
while True:
if uart.any() > 0:
strmsg = uart.read()
print(strmsg)
if 'on' in strmsg:
led.on()
uart.write('Turning ON led')
print('Turning ON led')
elif 'off' in strmsg:
led.off()
uart.write('Turning OFF led')
print('Turning OFF led')
else:
uart.write('Invalid command.')
print('Invalid command.')
在计算机上位机(串口调试助手之类的)软件中
- 输入
led_on
则板载led点亮 (字符中带on就会点亮) - 输入
led_off
则板载led熄灭 (字符中带off就会熄灭)
以上是关于STM32F407单片机UART串口gpio口复用功能配置问题的主要内容,如果未能解决你的问题,请参考以下文章