這是 MicroPython 項目,旨在在微控制器和小型嵌入式系統上實現 Python 3.x。您可以在 micropython.org 上找到官方網站。
警告:專案處於測試階段,可能會發生程式碼庫更改,包括專案範圍的名稱變更和 API 變更。
MicroPython 實作了整個 Python 3.4 語法(包括異常、 with
、 yield from
等,另外還有 Python 3.5 中的async
/ await
關鍵字以及更高版本中的一些精選功能)。提供了以下核心資料類型: str
(包括基本的Unicode支援)、 bytes
、 bytearray
、 tuple
、 list
、 dict
、 set
、 frozenset
、 array.array
、 collections.namedtuple
、類別和實例。內建模組asyncio
os
_thread
sys
ssl
time
、 re
socket
struct
等。請注意,僅針對資料類型和模組實作了 Python 3 功能的子集。
MicroPython 可以以文字來源形式(.py 檔案)或預先編譯字節碼(.mpy 檔案)執行腳本,在這兩種情況下都可以從裝置上的檔案系統或「凍結」到 MicroPython 執行檔中。
MicroPython 還提供了一組 MicroPython 特定模組來存取特定於硬體的功能和周邊裝置,例如 GPIO、計時器、ADC、DAC、PWM、SPI、I2C、CAN、藍牙和 USB。
請參閱線上文件以取得 API 參考、有關使用 MicroPython 的資訊以及有關如何實現它的資訊。
我們使用 GitHub Discussions 作為論壇,使用 Discord 進行聊天。這些是向社群提出問題和建議或討論基於 MicroPython 的專案的好地方。
對於錯誤和功能請求,請提出問題並遵循那裡的模板。
有關 MicroPython pyboard(原始 Kickstarter 活動中官方支援的開發板)的信息,請參閱原理圖、引腳排列和文件。
MicroPython 是一個開源項目,歡迎貢獻。為了提高工作效率,請務必遵循貢獻者指南和程式碼約定。請注意,MicroPython 是根據 MIT 許可證獲得許可的,所有貢獻都應遵循此許可證。
此儲存庫包含以下元件:
py/——核心Python實現,包括編譯器、執行時間和核心函式庫。
mpy-cross/ —— MicroPython 交叉編譯器,用於將腳本轉換為預先編譯的字節碼。
ports/——MicroPython 運行的各種連接埠和架構的特定於平台的程式碼。
lib/ -- 外部相依性的子模組。
測試/——測試框架和測試腳本。
docs/——Sphinx reStructuredText 格式的使用者文件。這用於生成線上文件。
extmod/-以 C 實現的附加(非核心)模組。
tools/——各種工具,包括 pyboard.py 模組。
example/ -- 一些範例 Python 腳本。
「make」用於建構組件,或在基於 BSD 的系統上使用「gmake」。您還需要 bash、gcc 和 Python 3.3+ 可用作命令python3
(如果您的系統只有 Python 2.7,則使用附加選項PYTHON=python2
呼叫 make)。某些連接埠(rp2 和 esp32)也使用 CMake。
MicroPython 可在各種微控制器以及類別 Unix(包括 Linux、BSD、macOS、WSL)和 Windows 系統上運作。
微控制器目標可以小至 256kiB 快閃記憶體 + 16kiB RAM,但至少具有 512kiB 快閃記憶體 + 128kiB RAM 的裝置可以提供更全面的功能體驗。
Unix 和 Windows 連接埠可開發和測試 MicroPython 本身,並在這些平台上(特別是在嵌入式 Linux 系統上)提供 CPython 的輕量級替代方案。
「最小」連接埠提供了一個非常基本的 MicroPython 連接埠的範例,可以編譯為獨立的 Linux 二進位檔案以及 ARM Cortex M4。如果您想將 MicroPython 移植到另一個微控制器,請從這裡開始。此外,「裸臂」連接埠是絕對最小配置的範例,用於追蹤核心運行時和虛擬機器的程式碼大小。
此外,該儲存庫中還提供了以下連接埠:
cc3200-德州儀器 CC3200(含 PyCom WiPy)。
esp32-樂鑫 ESP32 SoC(含 ESP32S2、ESP32S3、ESP32C3、ESP32C6)。
esp8266——樂鑫 ESP8266 SoC。
mimxrt——NXP m.iMX RT(包括 Teensy 4.x)。
nrf——Nordic Semiconductor nRF51 和 nRF52。
pic16bit——Microchip PIC 16 位元。
powerpc-IBM PowerPC(包括 Microwatt)
qemu -- 基於 QEMU 的模擬目標(用於測試)
Renesas-ra——瑞薩 RA 系列。
rp2——Raspberry Pi RP2040(包括 Pico 和 Pico W)。
samd-Microchip(以前稱為 Atmel)SAMD21 和 SAMD51。
stm32-意法半導體STM32系列(包括F0、F4、F7、G0、G4、H7、L0、L4、WB)
webassemble-Emscripten 連接埠針對瀏覽器和 NodeJS。
zephyr——Zephyr RTOS。
大多數移植需要先建置 MicroPython 交叉編譯器。 該程式稱為 mpy-cross,用於將 Python 腳本預編譯為 .mpy 文件,然後將其包含(凍結)到連接埠的韌體/可執行檔中。 要建構 mpy-cross 使用:
$ cd mpy-cross $ make
核心 MicroPython VM 和運行時沒有外部依賴項,但給定連接埠可能依賴第三方驅動程式或供應商 HAL。此儲存庫包含連結到這些外部相依性的多個子模組。在編譯給定連接埠之前,使用
$ cd ports/name $ make submodules
以確保所有必需的子模組都已初始化。