树莓派4b和stm32通信
时间: 2025-04-26 22:49:15 浏览: 49
### 实现树莓派4B与STM32之间的通信
#### 1. 硬件连接
为了使树莓派4B和STM32通过串口通信,硬件上的准备至关重要。通常情况下,这涉及到使用USB转TTL模块或者直接利用GPIO引脚来完成UART接口间的物理连接[^1]。
对于采用GPIO的方式来说,需注意的是要将STM32的TXD管脚接到树莓派的RXD上;同样地,把STM32的RXD连到树莓派的TXD上去,并确保两者共地(GND相连)。
#### 2. 软件配置 - STM32端
在给定的例子中,可以看到STM32正在向其USART1发送字符'1','2','3','4'[^1]。这里的关键在于理解`USART_SendData()`函数的作用以及等待传输完成标志位(`USART_FLAG_TC`)被置位的过程。每次调用此API之后都会有一个短暂延时以防止数据冲突或丢失。
```c
// 发送单个字节的数据至USART1
USART_SendData(USART1, '1');
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
delay_ms(1000);
// 对于其他数值重复上述过程...
```
这段代码展示了如何逐次发送不同ASCII码表示的数字并确认每条消息已被成功发出后再继续下一条的消息传送操作。
#### 3. 软件配置 - 树莓派端
至于树莓派这边,则需要编写Python程序监听来自指定串行端口的信息流。可以借助pySerial库简化这一流程:
```python
import serial
ser = serial.Serial('/dev/ttyS0', baudrate=9600)
def read_from_stm():
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8').rstrip()
handle_command(line)
def handle_command(cmd):
print(f"Received command: {cmd}")
if __name__ == "__main__":
try:
read_from_stm()
except KeyboardInterrupt:
pass
finally:
ser.close()
```
以上脚本会持续监控是否有新的输入到达TTY设备(即Raspberry Pi的UART),一旦检测到有效载荷就会触发相应的处理逻辑。
阅读全文
相关推荐

















