前言
树莓派与STM32通过USART通讯
树莓派:Raspberry Pi 4B
其他设备:CH340
STM32:stm32f103c8t6
树莓派设置
usart设置
启用Serial Port
打开树莓派终端
在终端中输入sudo raspi-config
找到Interfaces Options选项,回车
找到Serial Port选项,回车
第一个选No
第二个选Yes
关闭Console
打开树莓派设置
进行如图配置
也可以直接输入以下命令关闭
sudo systemctl stop serial-getty@ttyS0.service sudo systemctl disable serial-getty@ttyS0.service
配置完成后重启
修改端口映射
在命令提示符中输入
sudo nano /boot/config.txt
如果内容是
DO NOT EDIT THIS FILE The file you are looking for has moved to /boot/firmware/config.txt
就输入
sudo nano /boot/firmware/config.txt
在其最后一行加入
dtoverlay=pi3-miniuart-bt
然后在控制台中输入
sudo nano /boot/cmdline.txt
如果内容是
DO NOT EDIT THIS FILE The file you are looking for has moved to /boot/firmware/cmdline.txt
就输入
sudo nano /boot/firmware/cmdline.txt
如果打开后,存在 console=serial1,115200
和 kgdboc=serial1,115200
,则删除。如果没有,这步骤忽略。
console=tty1 root=PARTUUID=774b284f-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=CN
重启树莓派
检查配置
在控制台中输入
ls -la /dev/
只需要存在如图内容即可
编写测试代码
import serial import time ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=1) if ser.isOpen == False: ser.open() # 打开串口 input_str = input("请输入你要发送的消息:") input_str += "\r\n" ser.write(input_str.encode()) time.sleep(.5) try: while True: size = ser.inWaiting() # 获得缓冲区字符 if size != 0: res = ser.read(size) # 读取内容并显示 print("返回消息:", res.decode()) ser.flushInput() # 情况接收缓存区 input_str = input("请输入你要发送的消息:") input_str += "\r\n" ser.write(input_str.encode()) time.sleep(.5) except KeyboardInterrupt: ser.close()
可以用CH340与正点原子串口调试工具调试