实现Python与STM32通信方式


Posted in Python onDecember 18, 2019

断断续续学了几周Stm32后,突然想实现上位机和下位机的通信,恰好自己学过一点python,便想通过python实现通信.

在网上看见python库pyserial可以实现此功能,便去官网找了一下 ,附上官网pyserial档链 接:https://pyserial.readthedocs.io/en/latest/pyserial.html#overview

首先在windows的CMD命令管理器中安装pyserial,直接在CMD中键入如下字符

pip install pyserial

再将Stm32用USB连接到电脑,打开设备管理器显示端口为COM14,然后在python中写下

import serial
 
#连接串口
serial = serial.Serial('COM14',115200,timeout=2) #连接COM14,波特率位115200
if serial.isOpen():
 print ('串口已打开')
else:
 print ('串口未打开')
 
 
 
#关闭串口
serial.close()
 
if serial.isOpen():
 print ('串口未关闭')
else:
 print ('串口已关闭')

运行后出现下图,记住在代码要在最后要用 serial.close() 函数去关闭串口,否则下次会打不开串口,会报错.

实现Python与STM32通信方式

之后我们在Stm32的代码中写入如下示例代码,模板来自正点原子的示例代码:

while(1)
 {
 if (USART_RX_STA&0x8000)
 {
 len = USART_RX_STA&0x3FFF;
 for (t=0;t<len;t++)
 {
 USART_SendData(USART1,USART_RX_BUF[t]);
 while (USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
 }
 USART_RX_STA=0;
 }
 else
 { 
 times++;
 if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
 delay_ms(10); 
 }
 }

该32的代码实现的功能为USART接受数据并返还给发送数据方.

在python编译器中写下数据接收与发送的完整代码:

import serial
 
#连接串口
serial = serial.Serial('COM14',115200,timeout=2)
if serial.isOpen():
 print ('串口已打开')
 
 data = b'Beking\r\n' #发送的数据
 serial.write(data)  #串口写数据
 print ('You Send Data:',data)
 
 while True:
 data = serial.read(20) #串口读20位数据
 if data != b'':
 break
 print ('receive data is :',data) 
 
else:
 print ('串口未打开')
 
 
 
#关闭串口
serial.close()
 
if serial.isOpen():
 print ('串口未关闭')
else:
 print ('串口已关闭')

运行结果为下图,发送的数据为 b'Beking\r\n' 接收数据为 b'Beking' .( 在正点原子的数据接受数据中要有\r\n字符,否则会接收不到(可以在代码中更改))

实现Python与STM32通信方式

如此就可以实现python与Stm32的简单数据接发,要是想实现更为复杂,更为实用的上位机与下位机通信,可以参考文首给出的pyserial文档链接.

以上这篇实现Python与STM32通信方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现一个简单的线程池
Apr 07 Python
在Python中使用pngquant压缩png图片的教程
Apr 09 Python
Python中splitlines()方法的使用简介
May 20 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
python 同时运行多个程序的实例
Jan 07 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
Python pandas用法最全整理
Aug 04 Python
python实现人工智能Ai抠图功能
Sep 05 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
详细总结Python常见的安全问题
May 21 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 #Python
python 浅谈serial与stm32通信的编码问题
Dec 18 #Python
基于numpy中的expand_dims函数用法
Dec 18 #Python
Python.append()与Python.expand()用法详解
Dec 18 #Python
python getopt模块使用实例解析
Dec 18 #Python
pytorch制作自己的LMDB数据操作示例
Dec 18 #Python
Python Gluon参数和模块命名操作教程
Dec 18 #Python
You might like
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
浅谈javascript中的作用域
2012/04/07 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
教师实习的自我鉴定
2013/10/26 职场文书
大学生实习思想汇报
2014/01/12 职场文书
继承权公证书
2014/04/09 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL