Python 开发 STM32F103 的完整教程
引言
在嵌入式系统中,STM32F103是一款广泛使用的微控制器,而Python作为一种易于学习和使用的编程语言,适合初学者建立与MCU之间的通信桥梁。在本篇文章中,我将带你一路走来,从开发环境的搭建到实现简单的LED控制,帮助你轻松入门STM32F103的开发工作。
流程概述
在进行Python开发STM32F103之前,我们需要了解整个流程。以下是步骤的概览:
步骤 | 描述 |
---|---|
1 | 安装开发环境 |
2 | 编写STM32代码 |
3 | 编写Python脚本 |
4 | 上传代码到STM32 |
5 | 运行并测试 |
详细步骤
1. 安装开发环境
要开始开发,首先需要安装一些必要的软件工具。
-
安装Python:
- [下载Python](
-
安装PySerial:
- PySerial是一个Python库,可以用来与串口进行通信。通过命令行执行:
pip install pyserial
- PySerial是一个Python库,可以用来与串口进行通信。通过命令行执行:
-
安装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
- 在STM32CubeIDE中,编译你的代码并链接程序。
- 使用USB线将STM32连接到电脑,确认连接正常。
- 在STM32CubeIDE中,选择 "Run" -> "Debug" 以将程序烧录到STM32上。
5. 运行并测试
- 确保STM32板子上的LED可用,连接好电源。
- 运行Python脚本,并在命令行中输入“1”点亮LED,输入“0”熄灭LED。
- 观察STM32板子的LED状态,确保通过Python脚本能够正确控制LED。
关系图
在这个项目中,STM32和Python脚本的结构关系如下:
erDiagram
STM32F103 ||--o{ PythonScript : "控制"
PythonScript {
string command
}
STM32F103 {
string ledState
}
结尾
通过以上步骤,我们完成了使用Python开发STM32F103的基础流程。从环境的搭建,到GPIO控制,再到Python脚本的编写与串口数据传输,整个过程虽然简单,但却是理解嵌入式系统开发及其与计算机通讯的基础。希望这篇文章能帮助你在STM32开发的道路上走得更远。未来,你可以继续探索更多功能,比如传感器的使用、Wi-Fi模块的接入等,进一步提升你的项目技能。
祝你在嵌入式开发的旅途中一帆风顺!如果你有任何疑问,欢迎随时联系我。