簡 介: 本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的 UART 部分軟件用例部分內容。
關鍵詞
:MicroPython,MM32F3277
在MM32F3277中存在 八個串口,對應的串口端口為:
UART端口(RX,TX):
UART1:PA10, PA9
UART2:PA3,PA2
UART3:PB11,PB10
UART4:PC11,PC10
UART5:PD2,PC12
UART6:PC7,.PC6
UART7:PE7,PE8
UART8:PD1,PD0
由於第一個串口(UART0)被用於交互界面(REPL),所示留給開發者使用的串口是從 UART2之後的串口。
下面代碼初始化 UART2,波特率為115200,每隔10ms發送 0x55(對應的字符 ‘U’)數據。串口發送數據是通過 write() 函數調用來實現的,每一次發送一個字節。
from machine import Pin,UART
import utime
uart2 = UART(1, 115200)
print('Test UART.')
while True:
_ = uart2.write(b'U')
utime.sleep_ms(10)
利用示波器測試 PA2(TX2)的輸出波形:
▲ 圖1.1.1 PA2(TX2)測量到輸出波形
使用短路子將 RXD3與RXD1連接在一起,也就是將REPL的接收端口RXD1連接在UART3的接收端口。
下面程序顯示了如何判斷串口內接收到了字符,並讀取該字符存儲在內存緩沖區內。當接收到回車字符(0xd)之後,便將接收到的字符串轉換成整數並顯示。
from machine import Pin,UART
import utime
uart2 = UART(2, 115200)
print('Test UART.')
buf = bytes(0)
while True:
if uart2.any():
buf = buf + uart2.read(uart2.any())
if buf[-1] == 13:
print(int(buf))
buf = bytes(0)
utime.sleep_ms(10)
處貼上運行結果如下。 在 Thonny交互界面上輸入數字並回車,程序變輸出對應的數字。如果輸入的字符中包含有非數字字符,最後程序出錯返回。
>> Reset MicroPython...
>> Wait for MicroPython coming back...
>> Download MicroPython : 33 lines/707 characters.
>> -------------------------------------------------------------------------
Test UART.
333
3333
123
Traceback (most recent call last):
File "<stdin>", line 22, in <module>
ValueError: invalid syntax for integer
>>>
本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的 UART 部分軟件用例部分內容。
■ 相關文獻鏈接:
● 相關圖表鏈接: