时间:2021-05-22
断断续续学了几周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,波特率位115200if serial.isOpen(): print ('串口已打开')else: print ('串口未打开') #关闭串口serial.close() if serial.isOpen(): print ('串口未关闭')else: print ('串口已关闭')运行后出现下图,记住在代码要在最后要用 serial.close() 函数去关闭串口,否则下次会打不开串口,会报错.
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的简单数据接发,要是想实现更为复杂,更为实用的上位机与下位机通信,可以参考文首给出的pyserial文档链接.
以上这篇实现Python与STM32通信方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
参考链接:decode错误处理方案可选用的编码使用环境:ubuntu18.04python3.65问题点:使用pyserial与stm32通信,使用如下形式的编
关于stm32与51单片机区别: 1、内核:51单片机采用的是51Core,8Bit@2MHzMax(分频后),0.06DMIPS;STM32采用的是ARMC
stm32单片机可以用Keil5、C语言或者汇编语言等语言进行编程。 在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM
stm32是一个单片机,可以用来做控制,你可以对他进行编程,可以理解为一台非常小型的集成在一块芯片上的电脑。 STM32系列专为要求高性能、低成本、低功耗的嵌
stm32是将单片机所能实现某些功能的元器件焊接在电路板上,目的是便于单片机爱好者。单片机是典型的嵌入式微控制器(MicrocontrollerUnit),由运