micropython/micropython

GitHub: micropython/micropython

专为资源受限设备设计的轻量级 Python 实现,让微控制器编程如普通 Python 般简洁高效。

Stars: 21533 | Forks: 8741

[![Unix CI 徽章](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/596d7f1503214616.svg)](https://github.com/micropython/micropython/actions?query=branch%3Amaster+event%3Apush) [![STM32 CI 徽章](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2e0ab2f3e0214625.svg)](https://github.com/micropython/micropython/actions?query=branch%3Amaster+event%3Apush) [![Docs CI 徽章](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/43d21895f1214634.svg)](https://docs.micropython.org/) [![codecov](https://codecov.io/gh/micropython/micropython/branch/master/graph/badge.svg?token=I92PfD05sD)](https://codecov.io/gh/micropython/micropython) # The MicroPython 项目

MicroPython Logo

这是 MicroPython 项目,一个面向微控制器、嵌入式系统和其他受限平台的 Python 3.x 实现。 你可以在 [micropython.org](http://www.micropython.org) 找到官方网站。 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`、类和实例。Builtin 模块包括 `os`、`sys`、`time`、`re` 和 `struct` 等。某些端口支持 `_thread` 模块(多线程)、用于网络连接的 `socket` 和 `ssl`,以及 `asyncio`。请注意,针对数据类型和模块仅实现了 Python 3 功能的一个子集。 MicroPython 可以执行文本源码形式(.py 文件)的脚本,或者执行预编译的字节码(.mpy 文件),在这两种情况下,既可以从设备上的文件系统加载,也可以“冻结”到 MicroPython 可执行文件中。 MicroPython 还提供了一组 MicroPython 特有的模块,用于访问硬件特定的功能和外设,例如 GPIO、Timers、ADC、DAC、PWM、SPI、I2C、CAN、Bluetooth 和 USB。 ## 入门指南 请参阅 [在线文档](https://docs.micropython.org/) 获取 API 参考以及有关使用 MicroPython 和其实现原理的信息。 我们使用 [GitHub Discussions](https://github.com/micropython/micropython/discussions) 作为我们的论坛,使用 [Discord](https://discord.gg/RB8HZSAExQ) 进行聊天。这些是向社区提问、寻求建议或讨论基于 MicroPython 的项目的绝佳场所。 对于错误和功能请求,请 [提出一个 issue](https://github.com/micropython/micropython/issues/new/choose) 并遵循那里的模板。 有关 [MicroPython pyboard](https://store.micropython.org/pyb-features)(即 [原 Kickstarter 活动](https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers) 中官方支持的开发板)的信息,请参阅 [原理图和引脚图](http://github.com/micropython/pyboard) 和 [文档](https://docs.micropython.org/en/latest/pyboard/quickref.html)。 ## MicroPython 设计价值观 “完美并非无以复加,而是删繁就简。” ―- 安托万·德·圣-埃克苏佩里。 在其设计和实现中,MicroPython 旨在遵循一套价值观。虽然不是一套严格的规则,但这些价值观和原则为新老贡献者以及维护者提供了有用的指导。 MicroPython 本质上是“Micro”与“Python”的结合:它关乎在资源受限的系统上运行 Python 编程语言。这两个概念在 MicroPython 的设计和实现的所有部分中相互平衡。 聚焦 MicroPython 开发的核心概念是: - 极简主义:以少胜多。 - 效率:工程、构建、执行、存储、功耗。 - 一致性:整个系统感觉像是一次设计完成的。 在使用 MicroPython 时,Python 语言被用作系统的人机接口,从而可以精细地控制连接到该系统的实体。 在硬件环境中,MicroPython 旨在给用户一种裸机的感觉:用户应该感觉到他们完全控制了系统,在程序员和物理世界之间几乎没有阻隔。 MicroPython 认识到系统可能非常复杂。现有的 Python 库结合 MicroPython 特有的库,提供了一种用户友好的方式来驾驭系统的复杂性。 Python 语言兼容性对 MicroPython 非常重要,乍一看 MicroPython 应该看起来就像普通的 Python。首先,大多数 Python 脚本应该可以在 MicroPython 上不加修改地运行,即使是在资源非常紧张的设备上。此外,如果需要更好地匹配 Python,有办法扩展 MicroPython。提供的内置模块是相应 Python 模块的高效子集,没有功能重复,并允许在需要时用 Python 进行扩展。 ## 关于本仓库 本仓库包含以下组件: - [py/](py/) -- 核心 Python 实现,包括编译器、runtime 和核心库。 - [mpy-cross/](mpy-cross/) -- MicroPython 交叉编译器,用于将脚本转换为预编译的字节码。 - [ports/](ports/) -- MicroPython 运行的各种端口和架构的平台特定代码。 - [lib/](lib/) -- 外部依赖的子模块。 - [tests/](tests/) -- 测试框架和测试脚本。 - [docs/](docs/) -- Sphinx reStructuredText 格式的用户文档。用于生成 [在线文档](http://docs.micropython.org)。 - [extmod/](extmod/) -- 用 C 实现的附加(非核心)模块。 - [tools/](tools/) -- 各种工具,包括 pyboard.py 模块。 - [examples/](examples/) -- 一些 Python 脚本示例。 "make" 用于构建组件,在基于 BSD 的系统上则使用 "gmake"。 你还需要 bash、gcc 和 Python 3.3+(作为 `python3` 命令可用)。 某些端口(rp2 和 esp32)还使用 CMake。 ## 支持的平台与架构 MicroPython 可在广泛的微控制器上运行,也可在类 Unix(包括 Linux、BSD、macOS、WSL)和 Windows 系统上运行。 微控制器目标最小可以是 256kiB flash + 16kiB RAM,尽管至少拥有 512kiB flash + 128kiB RAM 的设备可以提供功能更全的体验。 [Unix](ports/unix) 和 [Windows](ports/windows) 端口既允许开发和测试 MicroPython 本身,也在此类平台上(特别是在嵌入式 Linux 系统上)提供了 CPython 的轻量级替代方案。 本仓库中提供了二十多种不同的 MicroPython 移植版本,分为三个 [MicroPython 支持层级](https://docs.micropython.org/en/latest/develop/support_tiers.html)。 # Tier 1 移植 👑 [Tier 1](https://docs.micropython.org/en/latest/develop/support_tiers.html) 中的移植是成熟的,并且拥有最活跃的开发、支持和测试: | 移植 | 目标 | 快速参考 | |--------------------------|----------------------------------------------------------------------------------------|----------------------------------------------------------------------| | [esp32](ports/esp32)* | Espressif ESP32 SoCs (ESP32, ESP32S2, ESP32S3, ESP32C3, ESP32C6) | [这里](https://docs.micropython.org/en/latest/esp32/quickref.html) | | [mimxrt](ports/mimxrt) | NXP m.iMX RT | [这里](https://docs.micropython.org/en/latest/mimxrt/quickref.html) | | [rp2](ports/rp2) | Raspberry Pi RP2040 和 RP2350 | [这里](https://docs.micropython.org/en/latest/rp2/quickref.html) | | [samd](ports/samd) | Microchip (前身 Atmel) SAMD21 和 SAMD51 | [这里](https://docs.micropython.org/en/latest/samd/quickref.html) | | [stm32](ports/stm32) | STMicroelectronics STM32 MCUs (F0, F4, F7, G0, G4, H5, H7, L0, L1, L4, N6, WB, WL) | [这里](https://docs.micropython.org/en/latest/pyboard/quickref.html) | | [unix](ports/unix) | Linux, BSD, macOS, WSL | [这里](https://docs.micropython.org/en/latest/unix/quickref.html) | | [windows](ports/windows) | Microsoft Windows | [这里](https://docs.micropython.org/en/latest/unix/quickref.html) | 星号表示该移植获得了供应商持续的资金支持。 # Tier 2 移植 ✔ [Tier 2](https://docs.micropython.org/en/latest/develop/support_tiers.html) 中的移植不如 Tier 1 成熟,开发和测试也不如 Tier 1 活跃,但仍得到完全支持: | 移植 | 目标 | 快速参考 | |----------------------------------|-------------------------------------------------------------|-------------------------------------------------------------------------| | [alif](ports/alif) | Alif Semiconductor Ensemble MCUs (E3, E7) | | | [embed](ports/embed) | 生成一组用于嵌入项目的 .c/.h 文件 | | | [nrf](ports/nrf) | Nordic Semiconductor nRF51 和 nRF52 | | | [renesas-ra](ports/renesas-ra) | Renesas RA 系列 | [这里](https://docs.micropython.org/en/latest/renesas-ra/quickref.html) | | [webassembly](ports/webassembly) | Emscripten 移植,目标为浏览器和 NodeJS | | | [zephyr](ports/zephyr) | Zephyr RTOS | [这里](https://docs.micropython.org/en/latest/zephyr/quickref.html) | # Tier 3 移植 [Tier 3](https://docs.micropython.org/en/latest/develop/support_tiers.html) 中的移植在 CI 中构建,但 MicroPython 维护者不定期测试: | 移植 | 目标 | 快速参考 | |----------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------| | [cc3200](ports/cc3200) | Texas Instruments CC3200 | [对于 WiPy](https://docs.micropython.org/en/latest/wipy/quickref.html) | | [esp8266](ports/esp8266) | Espressif ESP8266 SoC | [这里](https://docs.micropython.org/en/latest/esp8266/quickref.html) | | [pic16bit](ports/pic16bit) | Microchip PIC 16-bit | | | [powerpc](ports/powerpc) | IBM PowerPC (包括 Microwatt) | | # 附加移植 除上述之外,还有一个 Tier M,包含主要用于维护、开发和测试的移植: - ["bare-arm"](ports/bare-arm) 移植是一个绝对最小配置的示例,该配置仍包含编译器,用于跟踪核心 runtime 和 VM 的代码大小。 - ["minimal"](ports/minimal) 移植提供了一个非常基础的 MicroPython 移植示例,既可以编译为独立的 Linux 二进制文件,也可以用于 ARM Cortex-M4。如果你想将 MicroPython 移植到另一个微控制器,请从此开始。 - [qemu](ports/qemu) 移植是基于 QEMU 的模拟目标,用于 Cortex-A、Cortex-M、RISC-V 32 位和 RISC-V 64 位架构。 ## MicroPython 交叉编译器,mpy-cross 大多数移植需要先构建 [MicroPython 交叉编译器](mpy-cross)。这个名为 mpy-cross 的程序用于将 Python 脚本预编译为 .mpy 文件,然后可以将这些文件包含(冻结)到移植的固件/可执行文件中。要构建 mpy-cross,请使用: ``` $ cd mpy-cross $ make ``` ## 外部依赖 核心 MicroPython VM 和 runtime 没有外部依赖,但给定的移植可能依赖于第三方驱动或厂商 HAL。本仓库包含链接到这些外部依赖的 [几个子模块](lib/)。 在编译给定移植之前,请使用 ``` $ cd ports/name $ make submodules ``` 以确保所有必需的子模块已初始化。
标签:asyncio, ATT&CK 框架, Bash脚本, Cortex-M, IoT, MicroPython, MicroPython教程, Python 3, Python解释器, STM32, STM32开发, Unix, 低功耗开发, 创客, 单片机开发, 固件开发, 客户端加密, 嵌入式Python, 嵌入式系统, 开源硬件, 异步编程, 微控制器, 数字足迹, 智能硬件, 机器人, 极简Python, 物联网, 生成式AI安全, 硬件编程, 编译器, 脚本语言, 虚拟机, 逆向工具