122 lines
4.0 KiB
Markdown
122 lines
4.0 KiB
Markdown
# MicroPython port for RT-Thread
|
|
|
|
MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems https://micropython.org
|
|
|
|
The IDE project is on https://github.com/armink/MpyOnRtt . This is only a software package for RT-Thread.
|
|
|
|
Let's get started by RT-Thread……
|
|
|
|
## Run MicroPython by Finsh/MSH
|
|
|
|
- input `pyhton` command will goto the MicroPython REPL(Read-Evaluate-Print-Loop)
|
|
|
|
```
|
|
msh />python
|
|
|
|
MicroPython v1.9.3-6-g1742ab26-dirty on 2017-11-04; RT-Thread Board with stm32f4
|
|
>>>
|
|
>>> print('Hello World')
|
|
Hello World
|
|
```
|
|
|
|
- Now you can iuput and run the python code on the terminal
|
|
- If you want exit the python REPL. Please press `CTRL + D` .
|
|
|
|
## Supported modules
|
|
|
|
### RT-Thread
|
|
|
|
```
|
|
>>> import rtthread
|
|
>>>
|
|
>>> rtthread.is_preempt_thread() # determine if code is running in a preemptible thread
|
|
True
|
|
>>> rtthread.current_tid() # current thread id
|
|
268464956
|
|
>>> rtthread.stacks_analyze() # show thread information
|
|
thread pri status sp stack size max used left tick error
|
|
---------- --- ------- ---------- ---------- ------ ---------- ---
|
|
elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
|
|
tshell 20 ready 0x00000260 0x00001000 39% 0x00000003 000
|
|
tidle 31 ready 0x00000070 0x00000100 51% 0x0000000f 000
|
|
SysMonitor 30 suspend 0x000000a4 0x00000200 32% 0x00000005 000
|
|
timer 4 suspend 0x00000080 0x00000200 25% 0x00000009 000
|
|
>>>
|
|
```
|
|
|
|
### Delay and timing
|
|
|
|
Use the [`time`](http://docs.micropython.org/en/latest/pyboard/library/utime.html#module-utime) module:
|
|
|
|
```
|
|
>>> import time
|
|
>>>
|
|
>>> time.sleep(1) # sleep for 1 second
|
|
>>> time.sleep_ms(500) # sleep for 500 milliseconds
|
|
>>> time.sleep_us(10) # sleep for 10 microseconds
|
|
>>> start = time.ticks_ms() # get value of millisecond counter
|
|
>>> delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
|
|
```
|
|
|
|
### pyb - functions related to the board
|
|
|
|
See [pyb](http://docs.micropython.org/en/latest/pyboard/library/pyb.html).
|
|
|
|
```
|
|
>>> import pyb
|
|
>>>
|
|
>>> pyb.info() # show information about the board
|
|
---------------------------------------------
|
|
RT-Thread
|
|
---------------------------------------------
|
|
total memory: 131048
|
|
used memory : 4920
|
|
maximum allocated memory: 5836
|
|
thread pri status sp stack size max used left tick error
|
|
---------- --- ------- ---------- ---------- ------ ---------- ---
|
|
elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
|
|
tshell 20 ready 0x0000019c 0x00001000 39% 0x00000006 000
|
|
tidle 31 ready 0x0000006c 0x00000100 50% 0x0000000b 000
|
|
SysMonitor 30 suspend 0x000000a8 0x00000200 32% 0x00000005 000
|
|
timer 4 suspend 0x0000007c 0x00000200 24% 0x00000009 000
|
|
---------------------------------------------
|
|
qstr:
|
|
n_pool=0
|
|
n_qstr=0
|
|
n_str_data_bytes=0
|
|
n_total_bytes=0
|
|
---------------------------------------------
|
|
GC:
|
|
16064 total
|
|
464 : 15600
|
|
1=14 2=6 m=3
|
|
>>> pyb.enable_irq() # enable interrupt
|
|
>>> pyb.disable_irq() # disable interrupt, WARNING: this operation is dangerous
|
|
>>> time_start = pyb.millis() # return the number of milliseconds
|
|
>>> pyb.elapsed_millis(time_start) # calculate the elapsed time of milliseconds
|
|
2449
|
|
>>> time_start = pyb.micros() # return the number of microseconds
|
|
>>> pyb.elapsed_micros(time_start) # calculate the elapsed time of microseconds
|
|
1769000
|
|
>>> pyb.delay(1000) # delay milliseconds
|
|
>>> pyb.udelay(1000*1000) # delay microseconds
|
|
>>> pyb.hard_reset() # hard reset, like push RESET button
|
|
```
|
|
|
|
#### Pins and GPIO
|
|
|
|
See [pyb.Pin](http://docs.micropython.org/en/latest/pyboard/library/pyb.Pin.html#pyb-pin).
|
|
|
|
```
|
|
>>> from pyb import Pin
|
|
>>>
|
|
>>> p_out = Pin(("X1", 33), Pin.OUT_PP)
|
|
>>> p_out.value(1) # set io high
|
|
>>> p_out.value(0) # set io low
|
|
>>>
|
|
>>> p_in = Pin(("X2", 32), Pin.IN, Pin.PULL_UP)
|
|
>>> p_in.value() # get value, 0 or 1
|
|
```
|
|
|
|
### Coming soon
|