前言

树莓派与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,115200kgdboc=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与正点原子串口调试工具调试

STM32F103C8T6与树莓派通信

接线方式

代码下载

资源下载此资源下载价格为29.9¥(VIP 8折),请先
本资源为付费资源,禁止参与违法活动。 本资源如有违规,请联系站长立即删除。