Python实现串口通信(Python+STM32)详解

串口通信是一种简单而有效的串行数据传输方式,通常用于微控制器与计算机之间的通信。STM32系列微控制器广泛应用于嵌入式开发,Python则作为一种高效、易用的编程语言,可以通过适当的库实现与STM32的串口通信。本文将介绍如何使用Python与STM32进行串口通信,并提供代码示例。

1. 硬件准备

在开始之前,我们需要准备一些硬件设备: - 一块STM32开发板 - USB转TTL串口模块(如果开发板没有USB接口) - 一根USB数据线 - 一台安装了Python的计算机

2. STM32的串口配置

在STM32上,我们需要先配置硬件的串口。以STM32F4系列为例,我们可以使用STM32CubeMX进行配置:

  1. 打开STM32CubeMX,创建新项目,选择你的STM32型号。
  2. 在Pinout & Configuration中选择USARTx(例如USART2)。
  3. 配置USART的参数(波特率、数据位、停止位等),波特率一般设置为9600。
  4. 生成代码并在你的开发环境(如Keil、IAR或STM32CubeIDE)中编译并上传到开发板。

示例代码(在STM32中):

#include "stm32f4xx_hal.h"

UART_HandleTypeDef huart2;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART2_UART_Init();

    uint8_t message[] = "Hello from STM32\r\n";

    while (1) {
        HAL_UART_Transmit(&huart2, message, sizeof(message) - 1, HAL_MAX_DELAY);
        HAL_Delay(1000);
    }
}

void MX_USART2_UART_Init(void) {
    huart2.Instance = USART2;
    huart2.Init.BaudRate = 9600;
    huart2.Init.WordLength = UART_WORDLENGTH_8B;
    huart2.Init.StopBits = UART_STOPBITS_1;
    huart2.Init.Parity = UART_PARITY_NONE;
    huart2.Init.Mode = UART_MODE_TX_RX;
    huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart2.Init.OverSampling = UART_OVERSAMPLING_16;
    HAL_UART_Init(&huart2);
}

3. Python环境准备

在计算机上,我们需要安装pyserial库来进行串口通信。可以通过以下命令进行安装:

pip install pyserial

4. Python代码实现

下面的代码展示了如何在Python中打开串口并接收来自STM32的数据。

import serial
import time

# 配置串口
ser = serial.Serial('COM3', 9600, timeout=1)  # 替换为你的串口号
time.sleep(2)  # 等待串口稳定

try:
    while True:
        if ser.in_waiting > 0:  # 判断是否有数据接收
            data = ser.readline().decode('utf-8').rstrip()  # 读取一行数据并解码
            print(f"收到数据: {data}")
except KeyboardInterrupt:
    print("程序结束")
finally:
    ser.close()  # 关闭串口

5. 运行结果

在运行Python代码后,打开开发板的串口通信,Python程序会每秒接收到STM32发送的“Hello from STM32”字符串。当按下Ctrl+C,可以优雅地结束程序并关闭串口。

总结

通过以上步骤,您可以成功实现Python与STM32之间的串口通信。STM32负责数据的发送,而Python程序则负责接收和处理这些数据。这种方式可以用在各种嵌入式应用中,如传感器数据读取、遥控设备控制等,为开发人员提供了更加灵活的控制方式。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部