实现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 help()函数用法详解
Mar 11 Python
Python中的__slots__示例详解
Jul 06 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
python实现textrank关键词提取
Jun 22 Python
Python Django 前后端分离 API的方法
Aug 28 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
详解Python IO编程
Jul 24 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
10个顶级Python实用库推荐
Mar 04 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 Python
python数字图像处理:图像简单滤波
Jun 28 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
php随机抽奖实例分析
2015/03/04 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
简明json介绍
2008/09/28 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
javaScript实现滚动条事件详解
2020/03/24 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
python模拟Django框架实例
2016/05/17 Python
python中defaultdict的用法详解
2017/06/07 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python截图并保存的具体实例
2021/01/14 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
.NET常见笔试题集
2012/12/01 面试题
一份软件工程师的面试试题
2016/02/01 面试题
艺术系应届生的自我评价
2013/10/19 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
会议室管理制度范本
2015/08/06 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
PHP获取学生成绩的方法
2021/11/17 PHP