实现Python与STM32通信方式
断断续续学了几周Stm32后,突然想实现上位机和下位机的通信,恰好自己学过一点python,便想通过python实现通信.
在网上看见python库pyserial可以实现此功能,便去官网找了一下,附上官网pyserial档链接:https://pyserial.readthedocs.io/en/latest/pyserial.html#overview
首先在windows的CMD命令管理器中安装pyserial,直接在CMD中键入如下字符
pipinstallpyserial
再将Stm32用USB连接到电脑,打开设备管理器显示端口为COM14,然后在python中写下
importserial #连接串口 serial=serial.Serial('COM14',115200,timeout=2)#连接COM14,波特率位115200 ifserial.isOpen(): print('串口已打开') else: print('串口未打开') #关闭串口 serial.close() ifserial.isOpen(): print('串口未关闭') else: print('串口已关闭')
运行后出现下图,记住在代码要在最后要用serial.close()函数去关闭串口,否则下次会打不开串口,会报错.
之后我们在Stm32的代码中写入如下示例代码,模板来自正点原子的示例代码:
while(1) { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3FFF; for(t=0;t该32的代码实现的功能为USART接受数据并返还给发送数据方.
在python编译器中写下数据接收与发送的完整代码:
importserial #连接串口 serial=serial.Serial('COM14',115200,timeout=2) ifserial.isOpen(): print('串口已打开') data=b'Beking\r\n'#发送的数据 serial.write(data)#串口写数据 print('YouSendData:',data) whileTrue: data=serial.read(20)#串口读20位数据 ifdata!=b'': break print('receivedatais:',data) else: print('串口未打开') #关闭串口 serial.close() ifserial.isOpen(): print('串口未关闭') else: print('串口已关闭')运行结果为下图,发送的数据为b'Beking\r\n'接收数据为b'Beking'.(在正点原子的数据接受数据中要有\r\n字符,否则会接收不到(可以在代码中更改))
如此就可以实现python与Stm32的简单数据接发,要是想实现更为复杂,更为实用的上位机与下位机通信,可以参考文首给出的pyserial文档链接.
以上这篇实现Python与STM32通信方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。