您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何實現Python與STM32通信方式的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在網上看見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() 函數去關閉串口,否則下次會打不開串口,會報錯.
之后我們在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通信方式”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。