Python 开发 STM32F103 的完整教程

引言

在嵌入式系统中,STM32F103是一款广泛使用的微控制器,而Python作为一种易于学习和使用的编程语言,适合初学者建立与MCU之间的通信桥梁。在本篇文章中,我将带你一路走来,从开发环境的搭建到实现简单的LED控制,帮助你轻松入门STM32F103的开发工作。

流程概述

在进行Python开发STM32F103之前,我们需要了解整个流程。以下是步骤的概览:

步骤 描述
1 安装开发环境
2 编写STM32代码
3 编写Python脚本
4 上传代码到STM32
5 运行并测试

详细步骤

1. 安装开发环境

要开始开发,首先需要安装一些必要的软件工具。

  1. 安装Python

    • [下载Python](
  2. 安装PySerial

    • PySerial是一个Python库,可以用来与串口进行通信。通过命令行执行:
      pip install pyserial
      
  3. 安装STM32的开发工具

    • 推荐使用[STM32CubeIDE](

2. 编写STM32代码

在STM32CubeIDE中创建一个新的STM32工程,选择目标芯片为STM32F103。

示例代码:GPIO初始化和LED控制

在项目中添加以下代码:

#include "stm32f1xx.h"

// 初始化GPIO
void GPIO_Init(void) {
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 使能 GPIOC 时钟
    GPIOC->CRH &= ~GPIO_CRH_CNF13;  // 清除配置位
    GPIOC->CRH |= GPIO_CRH_MODE13_0; // 设置为输出模式,最大速度2MHz
}

// 切换LED状态
void toggle_LED(void) {
    GPIOC->ODR ^= GPIO_ODR_ODR13; // 切换PC13的状态
}

int main(void) {
    GPIO_Init(); // 初始化GPIO
    while (1) {
        toggle_LED(); // 切换LED状态
        for (volatile int i = 0; i < 1000000; i++); // 简单延时循环
    }
}
代码注释
  • RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;:使能GPIOC端口的时钟。
  • GPIOC->CRH &= ~GPIO_CRH_CNF13;:清除端口PC13的配置位。
  • GPIOC->CRH |= GPIO_CRH_MODE13_0;:将端口PC13设置为推挽输出,速度2MHz。
  • GPIOC->ODR ^= GPIO_ODR_ODR13;:切换端口PC13的输出电平,从而控制LED的状态。

3. 编写Python脚本

接下来,我们需要编写一个Python脚本,通过串口与STM32进行通信。

Python脚本示例

以下是一个简单的Python脚本,使用PySerial库通过串口发送命令来控制LED。

import serial
import time

# 配置串口参数
ser = serial.Serial('COM3', 9600)  # 请根据实际串口名称修改
time.sleep(2)  # 等待串口初始化

try:
    while True:
        command = input("输入 '1' 来点亮LED, '0' 来熄灭LED: ")
        if command == '1':
            ser.write(b'1')  # 发送字节数据给STM32
        elif command == '0':
            ser.write(b'0')
        else:
            print("无效输入,请重试.")
finally:
    ser.close()  # 关闭串口
代码注释
  • serial.Serial('COM3', 9600):打开串口COM3,波特率9600。
  • ser.write(b'1'):发送字节数据给STM32以点亮LED。
  • time.sleep(2):在串口初始化后等待2秒,确保连接稳定。

4. 上传代码到STM32

  1. 在STM32CubeIDE中,编译你的代码并链接程序。
  2. 使用USB线将STM32连接到电脑,确认连接正常。
  3. 在STM32CubeIDE中,选择 "Run" -> "Debug" 以将程序烧录到STM32上。

5. 运行并测试

  1. 确保STM32板子上的LED可用,连接好电源。
  2. 运行Python脚本,并在命令行中输入“1”点亮LED,输入“0”熄灭LED。
  3. 观察STM32板子的LED状态,确保通过Python脚本能够正确控制LED。

关系图

在这个项目中,STM32和Python脚本的结构关系如下:

erDiagram
    STM32F103 ||--o{ PythonScript : "控制"
    PythonScript {
        string command
    }
    STM32F103 {
        string ledState
    }

结尾

通过以上步骤,我们完成了使用Python开发STM32F103的基础流程。从环境的搭建,到GPIO控制,再到Python脚本的编写与串口数据传输,整个过程虽然简单,但却是理解嵌入式系统开发及其与计算机通讯的基础。希望这篇文章能帮助你在STM32开发的道路上走得更远。未来,你可以继续探索更多功能,比如传感器的使用、Wi-Fi模块的接入等,进一步提升你的项目技能。

祝你在嵌入式开发的旅途中一帆风顺!如果你有任何疑问,欢迎随时联系我。