這篇快速指南是爲 MicroPython 和 PYB Nano 的初學者寫的,經過這個文檔,能夠快速掌握 MicroPython 和 PYB Nano 的基本使用方法。php
PYB Nano開發板是目前體積最小、成本最低的MicroPython開發板python
PYB Nano很是適合做爲MicroPython的入門開發板,它支持絕大部分MicroPython的功能和函數,成本卻只有官方 PyBoard 的幾分之一,是學習MicroPython的首選開發板之一,也是從Arduino進階到其它應用的最好選擇。git
在開始使用 PYB Nano 前,須要作一點準備工做:github
由於Windows的用戶最多,因此下面的介紹也以Windwos爲主,但其它操做系統下的用法也是相似的,甚至更簡單。編程
另外,爲了順利使用 MicroPython,你們還須要對 Python 語言有基本瞭解,由於MicroPython 是基於 python3 的。安全
在Windows系統中,第一次鏈接開發板時,會出現一個PYBFLASH磁盤,同時提示須要安裝新的設備。這個新的設備就是虛擬串口,它的驅動程序就在新出現的PYBFLASH磁盤上,瀏覽到這個磁盤安裝驅動,安裝後就可使用。函數
在大部分的Linux、MacOS下無需安裝任何驅動程序。oop
在調試時,一般都使用串口終端軟件。在使用前,須要對終端軟件的串口參數進行設置。性能
先用數據線鏈接開發板,而後運行任一串口終端軟件,並設置串口爲 PYB Nano 對應的虛擬串口,在將串口參數設置以下:學習
波特率 |
115200 |
數據位 |
8 |
奇偶校驗 |
無 |
中止位 |
1 |
流量控制 |
無 |
個別軟件還須要設置字符集才能正常顯示。
一般調試程序時,都是在 MicroPython 的 REPL (read–eval–print loop,循環交互解釋器)環境下運行。在REPL下能夠直接輸入命令,有內置的解釋器執行。若是命令輸入正常就會執行,命令錯誤會有提示。
MicroPython支持幾個經常使用的快捷鍵,若是你熟悉串口終端,會發現它們的習慣是同樣的。
除了Ctrl-C,其它快捷鍵須要在空命令行下(沒有輸入任何字符)才能生效。此外,還可使用上下左右光標鍵
不管在哪一個開發板中,LED都是最經常使用的的例程,咱們也從這裏開始。
PYB Nano上有4個LED,分別是紅、綠、黃、藍色。咱們能夠經過 pyb.LED(n) [n = 1-4]去使用它們。如:
pyb.LED(1).on() # LED1亮 pyb.LED(2).off() # LED2滅 pyb.LED(3).toggle() #翻轉LED3 pyb.LED(4).intensity(20) # 設置LED4亮度20 [範圍是0-255] |
呼吸燈,下面程序將LED3設置爲呼吸燈
from pyb import Timer ia = 1 da = 1 def fa(t): global ia, da if (ia==0)or(ia==255): da=256-da ia=(ia+da)%256 pyb.LED(3).intensity(ia) tm=Timer(1, freq=200, callback=fa) |
在其它MicroPython開發板上,LED的數量多是1-4個,但用法是同樣的。此外不是每種 MicroPyhon 開發板的 LED 都支持亮度調整功能(intensity())。
在MicroPython的Pyboard中,預約義了按鍵開關對象,它的使用方法以下:
sw = pyb.Switch() sw() |
若是按鍵按下,返回True,不然返回False。
使用GPIO,須要導入pyb庫的Pin對象。
from pyb import Pin p_out = Pin('X1', Pin.OUT_PP) # 定義 X1 引腳爲輸出 p_out.high() # 輸出高電平 p_out.low() # 輸出低電平 p_out.value(1) # 等同於 p_out.high() p_in = Pin('X2', Pin.IN, Pin.PULL_UP) # 定義 X2 爲輸入 p_in.value() # get value, 0 or 1 |
下面代碼將按鍵(PC13)定義爲外中斷輸入,上升沿觸發模式。每當按下一次按鍵,LED1就會翻轉一次。
from pyb import Pin, ExtInt callback = lambda e: pyb.LED(1).toggle() ext = ExtInt(Pin('C13'), ExtInt.IRQ_RISING, Pin.PULL_UP, callback) |
定時器須要使用到pyb庫的Timer對象。下面程序中,先設置定時器1的頻率爲1000Hz,而後讀取計數器的值,再設置定時器的頻率爲0.5Hz,並在定時器回調函數(中斷)裏翻轉LED2。
from pyb import Timer tim = Timer(1, freq=1000) tim.counter() # get counter value tim.freq(0.5) # 0.5 Hz tim.callback(lambda t: pyb.LED(2).toggle()) |
PWM是定時器模塊的一個子功能,能夠將定時器的某一通道設置爲PWM輸出。下面代碼將 PA3 設置爲定時器2的CH4輸出,最後設置佔空比是10%。注意佔空比參數能夠是浮點數。
from pyb import Pin, Timer p = Pin('A3') # X1 has TIM2, CH4 tim = Timer(2, freq=1000) ch = tim.channel(4, Timer.PWM, pin=p) ch.pulse_width_percent(10) |
PYB Nano帶有10路12位ADC輸入,能夠很是容易讀取ADC的參數。下面的代碼讀取引腳 X8 (PB0)的輸入
from pyb import Pin, ADC adc = ADC(Pin('X8')) adc.read() # read value, 0-4095 |
另一種讀取ADC的方法是
from pyb import Pin, ADC a=pyb.ADCAll(12) # 設置ADC爲12位模式 a.read_channel(8) # 讀取ADC8 a.read_core_temp() # 讀取內部溫度傳感器 |
from pyb import UART uart = UART(1, 9600) uart.write('hello') uart.read(5) # read up to 5 bytes |
from pyb import SPI spi = SPI(1, SPI.MASTER, baudrate=200000, polarity=1, phase=0) spi.send('hello') spi.recv(5) # receive 5 bytes on the bus spi.send_recv('hello') # send a receive 5 bytes |
from pyb import I2C i2c = I2C(1, I2C.MASTER, baudrate=100000) i2c.scan() # returns list of slave addresses i2c.send('hello', 0x42) # send 5 bytes to slave with address 0x42 i2c.recv(5, 0x42) # receive 5 bytes from slave i2c.mem_read(2, 0x42, 0x10) # read 2 bytes from slave 0x42, slave memory 0x10 i2c.mem_write('xy', 0x42, 0x10) # write 2 bytes to slave 0x42, slave memory 0x10 |
PYB Nano內置了加速度傳感器MMA7660,能夠直接讀取傳感器的參數(數值範圍是[-32..32])。
acc = pyb.Accel() while True: print(acc.x(), acc.y(), acc.z()) pyb.delay(500) |
pyb.delay(500) # 延時500ms pyb.udelay(20) # 延時20us pyb.unique_id() # 讀取芯片的惟一序列號 pyb.millis() # 復位後的運行時間(ms) pyb.hard_reset() # 復位,和按下復位鍵的效果相同 pyb.bootloader() # 直接進入 bootloader 模式升級 pyb.disable_irq() # 禁止中斷 pyb.enable_irq() # 恢復中斷 pyb.freq() # 讀取系統時鐘 pyb.wfi() # 等待內部或外部中斷 pyb.stop() # 休眠模式,須要外部中斷或者實時時鐘喚醒 |
在啓動後,MicroPython會先運行 boot.py 文件,加載用戶驅動,而後在運行main.py,執行用戶程序。能夠將用戶程序放在main.py中,也能夠在main.py中再加載其它的文件。
在使用過程當中,咱們須要注意下面問題,避免形成文件系統破壞、數據丟失。
使用時間長了,由於各類緣由可能會出現故障,形成沒法正常啓動,不能進入REPL,文件系統破壞等現象,這時就須要經過出廠模式進行恢復。
進入出廠模式的方法是,
恢復出廠設置後,PYBFLASH中的內容會丟失,變爲默認文件。
MicroPython的更新速度很快,每次更新都會帶來一些新的功能,修正錯誤。因此掌握 MicroPython 的固件升級方法是有必要的。
PYB Nano支持下面幾種升級方法:
使用DFU模式,須要安裝ST的DfuSe_demo軟件(Windows)或者dfu-util(Linux)。使用SWD須要將開發板的SWD接口(PA13/PA14)鏈接到編程器,經過編程軟件(如STM32 ST-LINK Utility)下載。
以上是 MicroPython 和 PYB Nano 的最基礎知識,掌握後你們就能夠逐步深刻了。下面是一些MicroPython相關的參考網站和論壇,供你們參考。