MicroPython (GRPL-uPython) is a rewrite of the Python 3.4 programming language tailored for STM32 devices. It offers on-chip compiler, virtual machine and runtime to enable the rapid prototyping of applications. Extension modules provide direct access to the peripherals of the STM32 device. Custom components written in C or C++ can easily be integrated.
The pyboard reference development board is a small form-factor electronic circuit board based on a STM32F405 running MicroPython on the bare metal. The STM32 peripherals are exposed via a set of Python functions and classes.
Several STM32 Nucleo boards and STM32 Discovery kits are supported by MicroPython.
The high-level scripting language allows quick prototyping on MicroPython-based STM32 boards. RAM usage (especially the heap) is minimized. Migration from dynamic scripts is first enabled to pre-compiled bytecode and further to frozen bytecode where execution happens from flash. Computationally expensive application components can be migrated to C or C++ called from the Python code for performance optimization.
MicroPython is as compatible as possible with standard Python so that code and knowledge transfer from a desktop-based to an MCU-based embedded system is made easy.
MicroPython is supplied by a third party not affiliated to ST. For complete and latest information, refer to the third party website http://micropython.org/stm32/.
- Python compiler and virtual machine run on the STM32 device
- Interactive access to all language features over serial interface
- Fully open-source code under the MIT License available on GitHub
- Subset of Python 3.4 data types, functions, classes and modules:
- Numbers: Arbitrary precision integers, floating point and complex numbers
- Classes and instances: bytes, bytearray, tuple, list, dict, set, frozenset, array.array, collection, named tuple
- str datatype with basic unicode support (utf-8 encoding)
- closures, generators and full exception handling
- Built-in modules such as sys, time, struct, os
- Extra modules such as random, re, json, zlib, binascii, hashlib
- Support for cooperative multitasking via coroutines and Python 3.5 async keyword
- Multithreading for selected ports via the _thread module
- File system support (FAT) with custom block devices and transparent access from scripts
- Hardware-specific modules for access from scripts to STM32 peripherals such as GPIO, I2C, SPI, UART, ADC, DAC and timers
- Easy-to-build add-on modules in C or C++ with Python calling C/C++ and vice versa
- MicroPython for STM32 devices:
- based on STM32 Cube HAL
- small memory footprint: 256 kbyte Flash and 32 kbyte SRAM
- SD card support with file system access from within MicroPython
- USB support: CDC/VCP, MSC, HID